我有一个对象数组:
var test = [{name: 'lorem', age: 20, color:'red'}, {name: 'lorem', weight: 1, height:5} , {name: 'hello', ipsum : 'dolor'}]
我想把它们合并成一组。 预期结果为:
var test = [{name: 'lorem', age : 20, color: 'red', weight : 1, height : 5}, {name: 'hello', ipsum : 'dolor'}]
解决方案可以是vanilla,lodash或JQuery.。。
您可以使用reduce
并获取object.values
。 下面是一个工作示例:
null
var test = [{name: 'lorem', age: 20, color:'red'}, {name: 'lorem', weight: 1, height:5} , {name: 'hello', ipsum : 'dolor'}];
var result = Object.values(test.reduce((acc, {name, ...rest})=>{
acc[name] = {...(acc[name] || {}), ...{name, ...rest}};
return acc;
},{}));
console.log(result);
您可以使用下面的方法
null
var test = [
{ name: 'lorem', age: 20, color: 'red' },
{ name: 'lorem', weight: 1, height: 5 },
{ name: 'hello', ipsum: 'dolor' },
]
const finalResult = test.reduce((result, obj) => {
if (result[obj.name]) {
result[obj.name] = {
...result[obj.name],
...obj,
}
} else {
result[obj.name] = { ...obj }
}
return result
}, {})
console.log(Object.values(finalResult))