gpt4 book ai didi

javascript - 在 JavaScript 数组中按日期组合类似对象

转载 作者:行者123 更新时间:2023-12-03 09:56:40 25 4
gpt4 key购买 nike

我有以下数组:

var objArray = [
{ num: 1, date: '1/12/2017' },
{ num: 3, date: '1/12/2017' },
{ num: 7, date: '1/12/2017' },
{ num: 1, date: '1/13/2018' },
{ num: 3, date: '1/16/2018' },
{ num: 4, date: '1/16/2018' }
];

我想将具有相同日期的那些组合起来,以便输出数组如下所示:

var outputArr = [
{ num: 11, date: '1/12/2017' },
{ num: 1, date: '1/13/2018' },
{ num: 7, date: '1/16/2018' }
];

我将添加具有相似日期的所有 num 并创建一个新对象。

我有一个非常大的对象数据集,所以我正在努力减少处理时间。

我已将数组按日期排序,以便它反射(reflect) objArray

For 循环看起来很麻烦,因为我使用数组中的第一个日期并检查数组中的每个其他元素,如下面的伪代码:

var newArr = [];
for(i = 0; i < objArray.length; i++) {
for(j = 0; j < objArray.length; j++) {
var tempArr = [];
// check every date manually
// add similar to new array
tempArr.push({ similar items });
}
newArr.push(tempArr):
}

// Do another couple loops to combine those like arrays into another array

必须有一种比运行多个 for 循环更优雅的方式来执行此操作。

如有任何建议,我们将不胜感激。

最佳答案

只需使用 Array.reduce() 创建 map 并按日期对值进行分组, map 上的 Object.values() 将为您提供所需的输出值:

let arr = [ { num: 1, date: '1/12/2017' }, { num: 3, date: '1/12/2017' }, { num: 7, date: '1/12/2017' }, { num: 1, date: '1/13/2018' }, { num: 3, date: '1/16/2018' }, { num: 4, date: '1/16/2018' } ];

let result = Object.values(arr.reduce((a, {num, date})=>{
if(!a[date])
a[date] = Object.assign({},{num, date});
else
a[date].num += num;
return a;
},{}));
console.log(result);

关于javascript - 在 JavaScript 数组中按日期组合类似对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51936130/

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