选择具有最接近日期和来源的对象

时间:2016-01-23 03:24:02

标签: javascript json

我有以下对象,我需要选择具有最接近日期和时间的对象的值

例如

destroy

所以从上面的json中,我只想选择结果 obj以及xyz的最新时间和来源值

3 个答案:

答案 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)

首先,将所有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]有最新事件

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