1. 程式人生 > 其它 >js陣列物件相同項合併處理

js陣列物件相同項合併處理

技術標籤:javascriptjavascript

上篇文章講解如何把陣列物件中相同的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>

結果如圖:

合併結果