新的spread syntax可用于以下列方式优雅地合并多个对象:
const person = { name: 'David Walsh', gender: 'Male' };
const tools = { computer: 'Mac', editor: 'Atom' };
const summary = {...person, ...tools};
有没有办法在动态场景中使用它,其中要合并的对象的数量和名称事先不知道?
如果
var objects_to_be_merged = get_objects();
在运行时生成一个可迭代的对象列表,如何迭代地使用spread运算符来创建一个摘要对象,如上例所示?
答案 0 :(得分:4)
您可以使用Object.assign()
扩展语法来合并对象数组。
const person = { name: 'David Walsh', gender: 'Male' };
const tools = { computer: 'Mac', editor: 'Atom' };
const objects = () => [person, tools];
const summary = Object.assign({}, ...objects());
console.log(summary)
答案 1 :(得分:2)
有没有办法在动态场景中使用它,其中要合并的对象的数量和名称事先不知道?
没有财产传播符号*,没有。相反,您使用Object.assign
。如果对象的数量未知,您可以使用(有趣的)数组传播将数组传递给它:
const combined = Object.assign({}, ...get_objects());
(据推测get_objects()
返回一个数组或其他可迭代的数据。)
*属性差价为a Stage 3 proposal,但在当前的Chrome和Firefox中没有运行时标记,并且可能在ES2018中支持。 (而 array 传播是在ES2015中。)