gpt4 book ai didi

JavaScript - 对对象数组中不同对象的相同 id 值求和

转载 作者:行者123 更新时间:2023-11-28 14:45:47 26 4
gpt4 key购买 nike

我的代码中有一个对象数组。这些对象具有相同的键和不同或相同的值。

        var a = [];
a.push({taxid : 1, tax_name: 'VAT', tax_value:'25.00'});
a.push({taxid : 2, tax_name: 'Service Tax', tax_value:'20.00'});
a.push({taxid : 1, tax_name: 'VAT', tax_value:'25.00'});
a.push({taxid : 2, tax_name: 'Service Tax', tax_value:'75.00'});
console.log(a);

数组如下所示:

enter image description here

我想迭代此数组,如果对象中的 taxid 相同,则应将 tax_value 相加。

我尝试使用两个 for 循环,它可以正常工作,但在这种情况下,它会自行检查 id 并与自身求和。如下所示:

var sum = 0;
var newArray = [];
for (var i=0; i<a.length;i++){
for (var j=0;j<a.length;j++){
if(a[i]['taxid']==a[j]['taxid']){
sum = a[i]['tax_value'] + a[j]['tax_value'];
}
}
newArray.push({taxid : a[i]['taxid'], tax_value : sum});
}

感谢您的关心,谢谢。

最佳答案

您可以使用reduce并将这些值相加

var a = [];
a.push({taxid : 1, tax_name: 'VAT', tax_value:'25.00'});
a.push({taxid : 2, tax_name: 'Service Tax', tax_value:'20.00'});
a.push({taxid : 1, tax_name: 'VAT', tax_value:'25.00'});
a.push({taxid : 2, tax_name: 'Service Tax', tax_value:'75.00'});

let res = a.reduce((a, b) =>
a.set(b.taxid, (a.get(b.taxid) || 0) + Number(b.tax_value)), new Map);

console.log(res);

如果你想将结果Map获取到一个对象,你可以使用

toObject(map) {
let obj = Object.create(null);
for (let [key, value] of map.entries()) {
obj[key] = value;
}
return obj;
}

console.log(toObject(res));

关于JavaScript - 对对象数组中不同对象的相同 id 值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46389903/

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