Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按日期对对象数组进行分组,并在Javascript中获取每天最新的对象_Javascript - Fatal编程技术网

按日期对对象数组进行分组,并在Javascript中获取每天最新的对象

按日期对对象数组进行分组,并在Javascript中获取每天最新的对象,javascript,Javascript,我正在使用expressjs和mongodb构建一个API。我在一个集合中有条目来存储每天包含数据的各种文档。我的查询使用toArray() 我需要获取给定日期(分组)的每个对象,然后获取当天的最新对象,例如: [ { name: 'Edward', events: '900', created_at: '2021-01-20T20:56:42.368+00:00' // date object }, { name: 'Robert', eve

我正在使用expressjs和mongodb构建一个API。我在一个集合中有条目来存储每天包含数据的各种文档。我的查询使用
toArray()

我需要获取给定日期(分组)的每个对象,然后获取当天的最新对象,例如:

[
  {
    name: 'Edward',
    events: '900',
    created_at: '2021-01-20T20:56:42.368+00:00' // date object
  },
  {
    name: 'Robert',
    events: '700',
    created_at: '2021-01-19T15:56:42.368+00:00' // date object
  }
]
我写了一个函数来尝试这个,但它给了我以下类型的格式

{
  'Tue Jan 19 2021 15:56:42 GMT+0000 (Greenwich Mean Time)': [
    {
      name: 'Robert',
      events: '700',
      created_at: '2021-01-19T15:56:42.368+00:00'
    }
  ]
}
如何修改我的函数以达到预期的结果。我哪里做错了

函数组databeyonddaily(数据,键='created_at'){
常量组=数据减少((r,a)=>{
r[a.created_at]=[…r[a.created_at]| |[],a]
返回r
}, {})
返回组;
}

当前,您正在按照
属性处创建的
中存储的日期字符串对它们进行分组,但需要按照日期对它们进行分组,然后分别比较一天中的时间

下面的示例代码段根据日期字符串创建一个
new Date()
,并计算要用作累加器中键的历元日期。然后,它将以前存储的日期与当前迭代进行比较,并在以后更新。最后,它返回
reduce()
调用返回的对象的
Object.values()

const input=[{name:'John',events:'600',创建地点:'2021-01-20T14:56:42.368+00:00'},{name:'Edward',events:'900',创建地点:'2021-01-20T20:56:42.368+00:00'},{name:'Jane',events:'100',创建地点:'2021-01-19T13:56:42.368+00:00'},{name:'Robert',events:'700',创建地点:'2021-01-01-195:56:42+00'};
功能组DatabeyondDaily(数据){
常量组=数据减少((a,o)=>{
常数
日期=新日期(o['created_at']),
天=数学地板(日期/8.64e7);//每天86400000毫秒
//let entry=(a[day]??={…o});使用逻辑空赋值
让条目=(a[天]=a[天]|{…o});
if(新日期(条目['created_at'])<日期){
a[天]={……o};
}
归还
}, {})
返回Object.value(组);
}

log(groupDataBeyondDaily(输入))
OK。。。但这并不能回答我所有的问题:)“我需要获取给定日期(分组)的每个对象,然后获取当天最新的对象,例如”您能否提供一个示例,说明结果数据应该是什么样子?您是希望按日期分组,而每个组只保存最近的值,还是希望按日期分组所有值,然后进行筛选?您需要哪种分组标准?截止日期是否足够,或者您是否需要日期和时间?
{
  'Tue Jan 19 2021 15:56:42 GMT+0000 (Greenwich Mean Time)': [
    {
      name: 'Robert',
      events: '700',
      created_at: '2021-01-19T15:56:42.368+00:00'
    }
  ]
}