我想问一个js数组去重、合并的问题,元素中 如果sku相同的话,qty求和 id相加

例如 :
[{id: "123",qty: "3",sku: "ADD"},{id: "456",qty: "2",sku: "ABC"},{id: "789",qty: "4",sku: "ABC"}]
变成
[{id: "123",qty: "3",sku: "ADD"},{id: "456,789",qty: "6",sku: "ABC"}]

你题目的解答代码如下:

var arr1 = [{id: "123",qty: "3",sku: "ADD"},{id: "456",qty: "2",sku: "ABC"},{id: "789",qty: "4",sku: "ABC"}]
var d = {};
var arr2 = [];
arr1.forEach(function(v, i){
    if (d[v.sku]) {
        d[v.sku].id += ","+v.id;
        d[v.sku].qty = parseFloat(d[v.sku].qty)+parseFloat(v.qty)+"";
    } else {
        d[v.sku] = v;
        arr2.push(v);
    }
});
console.log(arr2);

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

定义一个新的空数组,循环放入push到新的数组,每次push之前都循环判断一次新数组中是否已经存在sku相同的值。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632