Flatten array with objects into 1 object

前端 未结 8 1510
情歌与酒
情歌与酒 2020-12-03 09:41

Given input:

[{ a: 1 }, { b: 2 }, { c: 3 }]

How to return:

{ a: 1, b: 2, c: 3 }

For arrays it\'s not a pr

8条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-03 10:21

    Use Object.assign:

    let merged = Object.assign(...arr); // ES6 (2015) syntax
    
    var merged = Object.assign.apply(Object, arr); // ES5 syntax
    

    Note that Object.assign is not yet implemented in many environment and you might need to polyfill it (either with core-js, another polyfill or using the polyfill on MDN).

    You mentioned lodash, so it's worth pointing out it comes with a _.assign function for this purpose that does the same thing:

     var merged = _.assign.apply(_, [{ a: 1 }, { b: 2 }, { c: 3 }]);
    

    But I really recommend the new standard library way.

提交回复
热议问题