js 合并数组对象,相同键的求和。合并数组对象中的相同项,并统计数量和

代码:

var list=[{
    price:1000,
    amount:1
},{
    price:1500,
    amount:3
},{
    price:1000,
    amount:1
},{
    price:1200,
    amount:2
},{
    price:1500,
    amount:3
},{
    price:1000,
    amount:1
}];
console.log('处理结果:',compare(list,'price','amount'));
//合并数组对象,相同key键的某一项数组求和
//arr:数组,judgeKey:判断的键,mergeKey:求和的键
function compare(arr,judgeKey,mergeKey){
    let result=[];
    arr.forEach(item=>{
        let index=-1;
        result.forEach((m,n)=>{
            if(m[judgeKey]==item[judgeKey]){
                index=n;
            }
        });
        if(index!=-1){
            result[index][mergeKey]+=item[mergeKey];
        }else{
            result.push(item);
        }
    });
    return result;
}

可以使用reduce方法来实现这个功能。假设有一个包含多个对象数组,每个对象都有一个相同的属性字段,可以按照以下步骤来实现统计相同属性字段的值的和: 1. 使用reduce方法遍历数组,将每个对象的属性值作为key,属性值作为value存储在一个新的对象。 2. 在reduce方法的回调函数,如果当前key已经存在于新对象,则将其对应的value值加上当前对象的属性值,否则将当前key和属性值作为新的值对添加到新对象。 3. 最后返回新对象,其每个属性字段的值都是原数组对应字段值的总和。 下面是一个示例代码: ```javascript const arr = [ { name: 'apple', num: 2 }, { name: 'banana', num: 3 }, { name: 'apple', num: 4 }, { name: 'orange', num: 1 }, { name: 'banana', num: 5 } ]; const result = arr.reduce((acc, cur) => { const key = cur.name; if (acc[key]) { acc[key] += cur.num; } else { acc[key] = cur.num; } return acc; }, {}); console.log(result); // { apple: 6, banana: 8, orange: 1 } ``` 在上面的代码,我们使用reduce方法遍历数组`arr`,并将每个对象的`name`属性作为key,属性值`num`作为value存储在新对象`acc`。如果当前key已经存在于新对象,则将其对应的value值加上当前对象的属性值,否则将当前key和属性值作为新的值对添加到新对象。最后返回新对象`acc`,其每个属性字段的值都是原数组对应字段值的总和。 运行上面的代码,将输出一个新对象,其每个属性字段的值都是原数组对应字段值的总和。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草字

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值