好吧,我需要添加同名产品的价格并相应修改数组。
输入:records=[{'name':'A', 'price':200},{'name':'B', 'price':350},{'name':'A', 'price':150},{'name':'B', 'price':300}]
输出:records=[{'name':'A', 'price':350},{'name':'B', 'price':650}]
如果使用javascript forEach函数提供解决方案,将会很高兴。
答案 0 :(得分:1)
您可以使用所需对象构建一个新数组,并使用此对象的引用将价格添加到分组项目中。
var records = [{ 'name': 'A', 'price': 200 }, { 'name': 'B', 'price': 350 }, { 'name': 'A', 'price': 150 }, { 'name': 'B', 'price': 300 }],
result = [];
records.forEach(function (a) {
if (!this[a.name]) {
this[a.name] = { name: a.name, price: 0 };
result.push(this[a.name]);
}
this[a.name].price += a.price;
}, {});
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
答案 1 :(得分:0)
另一种方法
records.map(function(element, index, array){
return {
name: element.name,
price: (array
.reduceRight(function(previousvalue, currentvalue, currentindex){
var dup = currentvalue.name === element.name;
var cp = dup? currentvalue.price: 0;
dup? array.splice(currentindex, 1):0;
return previousvalue + cp;
}, 0))}
}).filter(function(element){ return typeof element !== "undefined";});