var goodsPrcie = [
{ name: 'clothes', price: 21 },
{ name: 'clothes', price: 23 },
{ name: 'shoes', price: 21 },
{ name: 'han', price: 22 },
]
然后想实现的结果是{clothes44 , shoes:21, han:22}
function ground(objectArray,property) {
let pre= objectArray.reduce(function (pre, cur) {
var key = cur[property]
if (!pre[key]) {
pre[key] = [ ]
}
pre[key].push(cur)
return pre
}, {});
//写到这一步 实在写不下去了 9命啊啊
}
var arr = ground(goodsPrcie, 'name')
console.log(arr);
你这个数据是写死的吗?还是后台生成的,如果是后台的统计返回就可以了。
你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)
var goodsPrcie = [
{ name: 'clothes', price: 21 },
{ name: 'clothes', price: 23 },
{ name: 'shoes', price: 21 },
{ name: 'han', price: 22 },
]
function ground(objectArray,property) {
let pre= objectArray.reduce(function (pre, cur) {
var key = cur[property]
if (!(key in pre)) {
pre[key] = cur.price;
} else{
pre[key] += cur.price;
}
return pre
}, {});
return pre
}
var arr = ground(goodsPrcie, 'name')
console.log(arr);
let goodsPrcie = [
{ name: 'clothes', price: 21 },
{ name: 'clothes', price: 23 },
{ name: 'shoes', price: 21 },
{ name: 'clothes', price: 23 },
{ name: 'han', price: 22 },
]
//{clothes:67 , shoes:21, han:22}
//name 相同求和 name不同 返回
function ground(goodsPrcie){
let newObject={}
goodsPrcie.forEach((item)=>{
let b={}
b[item.name]=item.price
if(item.name in newObject){
let newprice=newObject[item.name]
newObject[item.name]=newprice+item.price
}else{
Object.assign(newObject,b)
}
})
return newObject
}
console.log(ground(goodsPrcie))