我有以下对象,我需要选择具有最接近日期和时间的对象的值
例如
destroy
所以从上面的json中,我只想选择结果 obj以及xyz的最新时间和来源值
答案 0 :(得分: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]);
答案 1 :(得分:1)
首先,将所有xyz
和abc
分成不同的数组。
//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]
有最新事件
答案 2 :(得分: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);