js数组对象相同项合并处理

上篇文章讲解 如何把数组对象中相同的key值合并,并且把对应的id放到一个数组中。这篇文章讲解另一种合并js数组对象中数据的场景。

1、获取原始的数组arr数据
2、创建一个map空对象和一个dest空数组,通过判断map中是否含有某项,来判断数组dest是否添加数据
3、判断相同项和已有的dest数组内容比较合并

代码如下:

<script type="text/javascript" src="js/jquery.min.js"></script>
<script>
 	$(function(){
  	var arr = [
    	{id: "1", medName: "益智仁", quantity: "15", sendNum: "7"},
        {id: "1", medName: "益智仁", quantity: "10", sendNum: "7"},
        {id: "2", medName: "葶苈子", quantity: "10", sendNum: "6"},
        {id: "2", medName: "葶苈子",quantity: "15", sendNum: "7"},
        {id: "3", medName: "枳实", quantity: "10", sendNum: "7"},
        {id: "3", medName: "枳实", quantity: "10", sendNum: "6"}
  	];
  	var map = {},dest = [];
  	for(var i = 0; i < arr.length; i++){
    	var ai = arr[i];
    	if(!map[ai.id]){
      	dest.push({id: ai.id, medName: ai.medName, value: ai.quantity*1*ai.sendNum});
      	map[ai.id] = ai;

    	} else {
      	for(var j = 0; j < dest.length; j++){
        	var dj = dest[j];
        	if(dj.id == ai.id){
          	dj.value = parseInt(dj.value) + parseInt(ai.quantity*1*ai.sendNum);
          	break;
        	}
      	}
    	}
  	};
  	console.log(dest);
	})
</script>

结果如图:

合并结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值