2017-04-14 4 views
0

말, 나는 하루에 여러 트랜잭션이있을 수있는 JSON 데이터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 데이터에서 가장 최근의 1 주 또는 1 개월의 거래 레코드를 얻으려면 어떻게해야합니까?

+0

우선 json이 올바르게 보이지 않습니다. 배열이되어야합니다. 둘째, 해당 배열의 항목을 반복하고 논리를 적용해야합니다. 당신은 배열의'reduce' 메쏘드를 사용할 수 있습니다. –

+0

'JSON'이 (가) 유효한 JSON –

답변

0

체크 아웃

아래

데이터는 내가 배열

내가 마지막 일개월 데이터에 대한 코드를 추가, 마지막 주에 Object에서 상을 변경, 유효하지 않은 것 같다

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);

Working example in Fiddle

+1

이 아닙니다. 다음 번에 답변을하기 전에 OP에게 자신의 작업을 요청하십시오. 잘 못된 질문에 대답하는 것은 좋지 않습니다. – evolutionxbox

+0

확실한 @evutionxbox –

+0

그것은 당신에게 불리합니다. 나는 단지 "내 코드 내놔"태도를 권장합니다. – evolutionxbox

관련 문제