将两个对象合二为一,更新键

如何连接两个数组,更新“qty”键而不重复“title”键?


例子:


对象1


obj1 = [{

    id: 0,

    qty: 1,

    title: "HEINEKEN0 350ML"

}]

对象2


obj2 = [

    {

        id: 0,

        qty: 5,

        title: "HEINEKEN0 350ML"

    },

    {

        id: 1,

        qty: 1,

        title: "HEINEKEN0 600ML"

    }

];

我需要的输出:


output = [

    {

        id: 0,

        qty: 6,

        title: "HEINEKEN0 350ML"

    },

    {

        id: 1,

        qty: 1,

        title: "HEINEKEN0 600ML"

    }

 ];


翻过高山走不出你
浏览 64回答 1
1回答

开满天机

您可以将两个数组连接在一起并Array#reduce与一个对象一起使用来存储每个标题的值。const obj1 = [{    id: 0,    qty: 1,    title: "HEINEKEN0 350ML"}],obj2 = [{    id: 0,    qty: 5,    title: "HEINEKEN0 350ML"},{    id: 1,    qty: 1,    title: "HEINEKEN0 600ML"}];const res = Object.values([...obj1, ...obj2].reduce((acc,{title,qty,id})=>{  (acc[title] = acc[title] || {id,qty: 0,title}).qty += qty;  return acc;}, {}));console.log(res);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript