繁体   English   中英

如何根据时间戳过滤对象数组

[英]how to filter array of objects based upon timestamp

我有超过一千个对象数组,数组中的每个对象都包含日期和时间字段。 如下所示,此记录每秒钟插入一次DB。 在这里,我想根据当前日期+小时+秒获得7天的记录,包括分钟和

例:

[{
    "date": "11/25/2016 08:45:58",
    "energy": 29940913188,
    "power": 6783,
    "time": 217781102
}, {
    "date": "11/25/2016 08:46:01",
    "energy": 29940913267,
    "power": 6792,
    "time": 217781105
}, {
    "date": "11/25/2016 08:46:02",
    "energy": 29940913318,
    "power": 6791,
    "time": 217781107
}, {
    "date": "11/25/2016 08:46:04",
    "energy": 29940913344,
    "power": 6797,
    "time": 217781108
}, {
    "date": "11/25/2016 08:46:05",
    "energy": 29940913396,
    "power": 6816,
    "time": 217781110
}, {
    "date": "11/25/2016 08:46:07",
    "energy": 29940913421,
    "power": 6798,
    "time": 217781111
}, {
    "date": "11/25/2016 08:46:08",
    "energy": 29940913473,
    "power": 6804,
    "time": 217781113
}]

请让我知道如何使用JS或jquery做到这一点

您可以使用以下过滤器来实现此目的。

data.filter((d) => {
  return new Date(d.date).getTime() >= seventhDay.getTime();
});

在这里,如果您的date数据类型已经是Date ,则无需再次将new Date(d.date)转换为日期。

另外,它也可以在没有getTime()情况下工作,如下所示。

return new Date(d.date) >= seventhDay;

 var data=[{"date":"11/20/2016 08:45:58","energy":29940913188,"power":6783,"time":217781102},{"date":"11/25/2016 08:46:01","energy":29940913267,"power":6792,"time":217781105},{"date":"11/25/2016 08:46:02","energy":29940913318,"power":6791,"time":217781107},{"date":"11/25/2016 08:46:04","energy":29940913344,"power":6797,"time":217781108},{"date":"11/25/2016 08:46:05","energy":29940913396,"power":6816,"time":217781110},{"date":"11/25/2016 08:46:07","energy":29940913421,"power":6798,"time":217781111},{"date":"11/21/2016 08:46:08","energy":29940913473,"power":6804,"time":217781113}] var seventhDay = new Date(); seventhDay.setDate(seventhDay.getDate() - 7); var filteredData = data.filter((d) => { return new Date(d.date).getTime() >= seventhDay.getTime(); }); console.log(filteredData); 

你可能会这样。

 var input = [{ "date": "11/22/2016 08:45:58", "energy": 29940913188, "power": 6783, "time": 217781102 }, { "date": "11/25/2016 08:46:01", "energy": 29940913267, "power": 6792, "time": 217781105 }, { "date": "11/25/2016 08:46:02", "energy": 29940913318, "power": 6791, "time": 217781107 }, { "date": "11/25/2016 08:46:04", "energy": 29940913344, "power": 6797, "time": 217781108 }, { "date": "11/25/2016 08:46:05", "energy": 29940913396, "power": 6816, "time": 217781110 }, { "date": "11/25/2016 08:46:07", "energy": 29940913421, "power": 6798, "time": 217781111 }, { "date": "11/25/2016 08:46:08", "energy": 29940913473, "power": 6804, "time": 217781113 }]; function filter(format) { return input.filter((obj) => { return obj.date.indexOf(format) !== -1; }); } var last7Days = getLast7Days(); var results = last7Days.map((date) => { return filter(date); }).filter((result) => { return result.length != 0 }); console.log(...results); function pad(number) { if (number < 10) { return '0' + number; } return number; } function getLast7Days() { var output = []; for (var idx = 0; idx < 7; idx++) { var date = new Date(); var last = new Date(date.getTime() - ((idx + 1) * 24 * 60 * 60 * 1000)); var day = pad(last.getDate()); var month = pad(last.getMonth() + 1); var year = last.getFullYear(); output.push(month + "/" + day + "/" + year); } console.log(output); return output; } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM