如何根据时间戳过滤对象数组 [英] how to filter array of objects based upon timestamp

查看:97
本文介绍了如何根据时间戳过滤对象数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have more than 1 thousand array of objects and every object inside the array contains date and time fileds. This records are inserted to DB for every seconds as shown below. Here I want get pas 7 days record including minutes and seconds based upon current date+hours+seconds.

示例:

[{
    "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做到这一点

Please let me know how can I do this by using JS or jquery

推荐答案

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

You can use the filter as below to achieve this.

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

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

Here, if your date data type is Date already, you don't need to convert to date again new Date(d.date).

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

Also, it will work without getTime() as below.

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

这篇关于如何根据时间戳过滤对象数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆