我有一个像这样的数组,我试图合并所以任何具有name属性相同的对象将在合并后包含合并对象列表
var array = [
{name: "One",
myList: [Object1, Object2]
},
{name: "Two",
myList: [Object3, Object4]
},
{name: "One",
myList: [Object5, Object6]
}
]
如何合并两个'One'对象,以便我得到类似
的内容var array = [
{name: "One",
myList: [Object1, Object2, Object5, Object6]
},
{name: "Two",
myList: [Object3, Object4]
}
]
希望在vanilla javascript中执行此操作
答案 0 :(得分:1)
使用.Write("<td colspan=""2"" class=""filterback"">")
'.write("<div style=""position:relative;left:150px; display:none;"" id=div_Edit" & g_lngRowCount & ">")
.Write("<table cellspacing=""2px"" cellpadding=""2px"" width=""100%"" border=""0"">")
:
reduce
答案 1 :(得分: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);
答案 2 :(得分:0)
Lodash
的另一种方法
var array = [
{ name: "One", myList: ["Object1", "Object2"] },
{ name: "Two", myList: ["Object3", "Object4"] },
{ name: "One", myList: ["Object5", "Object6"] }
];
const newArray = _.chain(array)
.reduce((acc, currentValue) => {
acc[currentValue.name] = (acc[currentValue.name] || []).concat(
currentValue.myList
);
return acc;
}, {})
.reduce((acc, currentValue, key) => {
acc.push({ name: key, myList: currentValue });
return acc;
}, [])
.value();
console.log(newArray);