2016-01-23 63 views
0

對象我有以下對象,其中i需要選擇該對象的值與來自最近的日期和時間挑選具有最接近的日期和源

例如

Result:[ 
    { 
    event:[ 
     { 
      time:2016-01-21T00:12:03Z 
      source: xyz 
     } 
    ] 
    }, 

    { 
    event:[ 
     { 
      time:2016-01-20T00:06:12Z, 
      source: xyz 
     } 
    ] 

    }, 

    { 
    event:[ 
     { 
      time:2016-01-20T00:06:12Z, 
      source: abc 
     } 
    ] 

    } 

] 

所以上述JSON,我只想挑結果 OBJ與XYZ

+0

此對象的語法無效。 – 2016-01-23 04:36:23

+0

謝謝@torazaburo我更正了它 – RRP

回答

1

的最新時間和來源值。如果您對列表進行排序,那麼最新的時間只需在列表中的最後一個項目:

Result = Result.filter(function(item) { 
    return item.event[0].source === 'xyz'; 
}); 

Result = Result.sort(function(a, b) { 
    var aAsDate = new Date(a.event[0].time); 
    var bAsDate = new Date(b.event[0].time); 

    return aAsDate - bAsDate; 
}); 

console.log(Result[Result.length - 1]); 
+0

是的,但我只需要選擇具有源的值:xyz – RRP

+0

我更新了我的答案。只是先過濾它。 –

+0

謝謝,但排序仍然返回兩個對象,而不是最新的時間 – RRP

1

首先,將所有的xyzabc分成不同的數組。

//for demo, i only filter all xyz 
var xyz_result = result.filter(function(item) { 
    return item.event.filter(function(event){ 
     return event.source === 'xyz' 
    }).length > 0; 
}); 

然後用日期

xyz_result.sort(function(a, b){ 
    var aDate = new Date(a.event[0].time); 
    var bDate = new Date(b.event[0].time); 

    //this might be tricky, i hope it has only 1 event 

    if(aDate > bDate) { 
     return -1; //you can play around with this values 
    } else if(aDate < bDate)) { 
     return 1; 
    } else { 
     return 0; 
    } 
}); 

現在xyz_result時間屬性排序排序,並xyz_result[0]有最新的事件

+0

我嘗試了這種排序,但仍然有兩個對象被拾取 – RRP

+0

是的,兩個對象都被選入數組,但數組[0]具有最新值。仔細閱讀 –

0

首先考慮的第一個事件是最新事件在結果json像這樣。

var latest = Result[0]; 

現在通過JavaScript的的forEach功能遍歷結果JSON和比較事件時有這樣的考慮最新的事件變量。

例 -

Result.forEach(function(ele){ 
    if(latest != ele) { 
    var t = new Date(latest.event[0].time); 
    var t1 = new Date(ele.event[0].time); 
    if(t < t1) 
     latest = ele; 
    } 
}); 

你可以看到最新的變量的最新事件。

console.log(latest.event[0].time); 
console.log(latest.event[0].source); 
+0

不是一個jQuery問題 – RRP

+0

@RajPowar現在我已經用javascript更新了答案。沒有任何jQuery被使用。 –