gpt4 book ai didi

javascript - 使用 javascript 创建累积对象

转载 作者:行者123 更新时间:2023-12-01 01:26:35 26 4
gpt4 key购买 nike

我有一组日期和一组对象。每个都有一个日期属性。我需要按日期对对象进行累积排序。因此,对于日期数组中的每个日期,我想为日期属性早于日期数组中的日期的每个对象创建一个累积对象。

例如以下日期数组和对象数组:

['2017-11-5', '2018-3-1', '2018-3-22']

[{name: 'Jes', date: '2017-11-2'}, {name: 'Jill', date: '2018-1-5'}, {name: 'Joe', date: '2018-2-25'}, {name: 'Jack', date: '2018-3-21'}]

期望的输出是:

[{name: 'Jes', date: '2017-11-2'}]

[{name: 'Jes', date: '2017-11-2'}, {name: 'Jill', date: '2018-1-5'}, {name: 'Joe', date: '2018-2-25'}]

[{name: 'Jes', date: '2017-11-2'}, {name: 'Jill', date: '2018-1-5'}, {name: 'Joe', date: '2018-2-25'}, {name: 'Jack', date: '2018-3-21'}]

我正在尝试使用大约 500 个日期和 30,000 个对象来执行此操作。

这是当前的代码片段,但由于我正在迭代的对象数量,我遇到了性能问题。

    _.each(dtArray,function(i:Date){
let dt = new Date(i);
let filtered = _.filter(data,function(row){
let dtVal = new Date(row['date']);
return dtVal<=dt;
});

最佳答案

您可以map()因为您希望每个日期都有一个结果数组,所以在日期上。然后在 map 中您可以filter()人们根据日期创建该数组:

let dates = ['2017-11-5', '2018-3-1', '2018-3-22']

let people = [{name: 'Jes', date: '2017-11-2'}, {name: 'Jill', date: '2018-1-5'}, {name: 'Joe', date: '2018-2-25'}, {name: 'Jack', date: '2018-3-21'}]

let cumul = dates.map(d => people.filter(person => person.date <= d))
console.log(JSON.stringify(cumul, null, 2))

关于javascript - 使用 javascript 创建累积对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53717170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com