gpt4 book ai didi

javascript求和多维数组

转载 作者:行者123 更新时间:2023-11-30 12:22:04 25 4
gpt4 key购买 nike

我有这个多维数组,我需要合并相等的字段并对总和值求和

var data = [
[
{field: 123, sum: 100},
{field: 345, sum: 98}
],[
{field: 123, sum: 12},
{field: 345, sum: 20}
]
];

所以从这个数组中我需要一个像这样的新数组。

var newArray = [
{field: 123, sum: 112},
{field: 345, sum: 118}
];

这是我的代码。

var newArray = [];
for(var i = 0; i < data.length; i++) {
for(var j = 0; j < data[i].length; j++) {
var matched = false;
for(var c = 0; c < newArray.length; c++) {
if(data[i][j].field == newArray[c].field) {
matched = true;
newArray[c].sum + data[i][j].sum;
}
}
console.log(data[i][j]);
if(!matched) {
newArray.push(data[i][j]);
}
}
}

但我没有得到正确的值。 console.log(newArray);

最佳答案

在函数式编程中,这将是一个经典的 map-reduce 问题,或者更具体地说,是一个按键归约。

如果您正在使用 underscore ,你可以这样做:

var op = _.chain(data)
//first put it all in one array
.flatten()
//then group by the field
.groupBy(function(item){return item.field;})
//then sum up all of the "sum" properties
.mapObject(function(val,key){
return _.reduce(val, function(total,sum){
return total + sum.sum;
},0);
})
//then map it back into our original data structure
.pairs()
.map(function(item){
return {field: item[0], sum: item[1]};
});

关于javascript求和多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30667121/

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