js陣列物件相同項合併處理
阿新 • • 發佈:2021-01-29
技術標籤: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>
結果如圖: