【发布时间】:2020-06-24 14:55:43
【问题描述】:
我有一个对象数组:
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 ...
编辑: 对不起,我忘了说它必须用 ES5 编写
编辑: 我几乎重写了 gorak 对 ES5 的提议。我尝试 _.clone 以避免使用传播运算符,但它不起作用
var r = _.values(_.reduce(test,function (acc, e) {
acc[e.name] = {...(acc[e.name] || {}), ...e}; // this line is still in ES6
return acc;
},{}));
【问题讨论】:
-
如果有两个相同的属性名会怎样?
-
这能回答你的问题吗? Merge 2 arrays of objects
-
@HereticMonkey> 如果两个属性相同,则必须用最后一个值重写属性。顺便说一句:您提供的链接不能解决我的问题,因为我只使用一个数组
标签: javascript object merge grouping