根据属性合并数组中的对象

blu*_*u10 5 javascript

我有一个像这样的数组,我正在尝试合并它,因此任何具有相同名称属性的对象在合并后都将包含合并对象的列表

var array = [ 
    {name: "One",
     myList: [Object1, Object2]
    },
    {name: "Two",
     myList: [Object3, Object4]
     },
     {name: "One",
     myList: [Object5, Object6]
     }
]
Run Code Online (Sandbox Code Playgroud)

我如何合并两个“一个”对象,这样我就得到类似的东西

var array = [ 
    {name: "One",
     myList: [Object1, Object2, Object5, Object6]
    },
    {name: "Two",
     myList: [Object3, Object4]
     }
]
Run Code Online (Sandbox Code Playgroud)

想要在普通的 javascript 中做到这一点

kin*_*ser 1

首先,您可以删除重复的条目并组织数组内的对象myList。然后,根据第一步中的有序对象,返回具有指定键的对象数组。

var array = [{name:"One",myList:['Object1','Object2']},{name:"Two",myList:['Object3','Object4']},{name:"One",myList:['Object5','Object6']}], obj = {};

array.forEach(function(v) {
  obj[v.name] = (obj[v.name] || []).concat(v.myList)
});

var arr = Object.keys(obj).reduce(function(s,a) {
  s.push({name: a, myList: obj[a]});
  return s;
}, []);

console.log(arr);
Run Code Online (Sandbox Code Playgroud)