数组通过id相同的,将其余字段num累加,并生成新的数组

let arr=[{id:1,num:5},{id:2,num:2},{id:1,num:5}];
function getNewlist(oldArr){
	var temp={};
	for(var i in oldArr){
			var id=oldArr[i].id;
		if(temp[id]){
			temp[id].num+=oldArr[i].num;
		}else{
			temp[id]=oldArr[i]
		}
	}
	var newArr=[];
	for(var j in temp){
		newArr.push(temp[j])
	}
	return newArr;
}
即可求得结果
getNewlist(arr)
[{id:1,num:10},{id:2,num:2};
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用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`,其中每个属性字段的值都是原数组中对应字段值的总和。 运行上面的代码,将输出一个对象,其中每个属性字段的值都是原数组中对应字段值的总和。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值