Szy*_*oda 29 javascript flatten lodash
给定输入:
[{ a: 1 }, { b: 2 }, { c: 3 }]
Run Code Online (Sandbox Code Playgroud)
如何退货:
{ a: 1, b: 2, c: 3 }
Run Code Online (Sandbox Code Playgroud)
Ben*_*aum 52
let merged = Object.assign(...arr); // ES6 (2015) syntax
var merged = Object.assign.apply(Object, arr); // ES5 syntax
Run Code Online (Sandbox Code Playgroud)
请注意,Object.assign在许多环境中尚未实现,您可能需要对其进行填充(使用core-js,另一个polyfill或使用MDN上的polyfill).
你提到了lodash,所以值得指出它带有一个_.assign用于此目的的功能,它可以做同样的事情:
var merged = _.assign.apply(_, [{ a: 1 }, { b: 2 }, { c: 3 }]);
Run Code Online (Sandbox Code Playgroud)
但我真的推荐新的标准库方式.
使用lodash,您可以使用merge():
var arr = [ { a: 1 }, { b: 2 }, { c: 3 } ];
_.merge.apply(null, [{}].concat(arr));
// ? { a: 1, b: 2, c: 3 }
Run Code Online (Sandbox Code Playgroud)
如果你在几个地方这样做,你可以merge()通过使用partial()和spread()来做得更优雅:
var merge = _.spread(_.partial(_.merge, {}));
merge(arr);
// ? { a: 1, b: 2, c: 3 }
Run Code Online (Sandbox Code Playgroud)