Flatten array with objects into 1 object

前端 未结 8 1524
情歌与酒
情歌与酒 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条回答
  •  北荒
    北荒 (楼主)
    2020-12-03 10:38

    You can use underscore.extend function like that:

    var _ = require('underscore');
    var a = [{ a: 1 }, { b: 2 }, { c: 3 }];
    
    var result = _.extend.apply(null, a);
    console.log(result); // { a: 1, b: 2, c: 3 }
    console.log(a); // [ { a: 1, b: 2, c: 3 }, { b: 2 }, { c: 3 } ]
    

    And to prevent modifying original array you should use

    var _ = require('underscore');
    var a = [{ a: 1 }, { b: 2 }, { c: 3 }];
    
    var result = _.extend.apply(null, [{}].concat(a));
    console.log(result); // { a: 1, b: 2, c: 3 }
    console.log(a); // [ { a: 1 }, { b: 2 }, { c: 3 } ]
    

    Here can test it

提交回复
热议问题