2017-04-14 3 views
0

言ってやるが、私は一日にいくつかのトランザクションがあるかもしれませんJSONデータで先週または先月のデータを取得するにはどうすればよいですか?

[ 
    { 
     "transaction": "34", 
     "date": "Mar 12 2016 10:00:00 AM" 
    }, { 
     "transaction": "21", 
     "date": "Mar 12 2016 10:00:00 AM" 
    }, { 
     "transaction": "40", 
     "date": "Mar 13 2016 10:00:00 AM" 
    }, { 
     "transaction": "40", 
     "date": "Mar 14 2016 10:00:00 AM" 
    } 

] 

JSONデータを持っています。このJSONデータから最新の1週間または1か月のトランザクションレコードを取得するにはどうすればよいですか?

データが有効でないと思われる以下の

+0

まず、あなたはjsonが正しくないように見えますが、配列[]でなければなりません。次に、配列内のアイテムを繰り返し処理し、ロジックを適用する必要があります。配列の 'reduce'メソッドを使うことができます。 –

+0

あなたの 'JSON'は有効なJSON –

答えて

0

チェックアウトは、私が最後の一週間、

var data = [{ 
 
     "transaction": "34", 
 
     "date": "Apr 12 2017 10:00:00 AM" 
 
    }, { 
 
     "transaction": "21", 
 
     "date": "Apr 12 2017 10:00:00 AM" 
 
    }, { 
 
     "transaction": "40", 
 
     "date": "Mar 15 2016 10:00:00 AM" 
 
    }, { 
 
     "transaction": "50", 
 
     "date": "Jan 13 2017 10:00:00 AM" 
 
    }, { 
 
     "transaction": "40", 
 
     "date": "Mar 13 2017 10:00:00 AM" 
 
    }, { 
 
     "transaction": "40", 
 
     "date": "Mar 14 2016 10:00:00 AM" 
 
    }]; 
 

 
//It will return dates diff in no. if months 
 
function monthDiff(d1, d2) { 
 
    var months; 
 
    months = (d2.getFullYear() - d1.getFullYear()) * 12; 
 
    months -= d1.getMonth() + 1; 
 
    months += d2.getMonth(); 
 
    return months <= 0 ? 0 : months; 
 
} 
 
//It will gets the last month date 
 
function getLastMonth(){ 
 
var x = new Date(); 
 
    x.setDate(1); 
 
    x.setMonth(x.getMonth()-1); 
 
    return x; 
 
} 
 
var prevMonthDate = getLastMonth(); 
 
var lastMonthData = data.filter(function(v){ 
 
return monthDiff(new Date(v.date),prevMonthDate) < 1; 
 
}); 
 

 
//This is the data for last one Month 
 
console.log(lastMonthData); 
 

 
//It will return dates diff in no. if Weeks 
 
function weekDiff(d1,d2){ 
 
var dif = Math.round(d1-d2); 
 
return Math.ceil(dif/1000/60/60/24/7); 
 
} 
 
//It will gets the last week date 
 
function getLastWeek(){ 
 
    var today = new Date(); 
 
    var lastWeek = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 7); 
 
    return lastWeek ; 
 
} 
 
var prevWeekDate = getLastWeek(); 
 
var lastWeekData = data.filter(function(v){ 
 
return weekDiff(new Date(v.date),prevWeekDate) == 1; 
 
}); 
 
//This is the data for last one Week 
 
console.log(lastWeekData);

を最終1ヶ月のデータのためのコードを追加してアレイ

へのオブジェクトからそれを変更しました

Working example in Fiddle

+1

ではありません。次回は、あなたが答える前に、自分の作品をOPに依頼してください。よくない質問に答えるのは良いことではありません。 – evolutionxbox

+0

確かに@evutionxbox –

+0

それはあなたに違反しない。私はちょうどそれが "私のコードをつかむ"態度を奨励していると思う。 – evolutionxbox

関連する問題