繁体   English   中英

将一组对象传播到一个父对象中

[英]Spread an array of objects into a parent object

有没有一种简单的方法可以使用 spread ...运算符将对象数组与另一个对象组合以创建单个对象? 这个例子显示了我想要完成的事情:

const arrayOfObjects = [
  { x: 'foo' },
  { y: 'bar' }
];

const obj = {
  hello: 'world'
};

我正在寻找的输出如下:

{
  x: 'foo',
  y: 'bar',
  hello: 'world'
}

我已经尝试了以下内容,但并没有完全给出预期的输出。

{
  hello: 'world'
  ...arrayOfObjects
}

// Gives
{
  0: { x: 'foo' },
  1: { y: 'bar' },
  hello: 'world'
};

是否可以巧妙地使用扩展运算符来做到这一点?

您可以使用带有扩展语法的Object.assign() ...

 const arrayOfObjects = [{ x: 'foo' }, { y: 'bar' }]; const obj = { hello: 'world' }; var result = Object.assign({}, obj, ...arrayOfObjects); console.log(result)

你可以使用 Object.assign();

Object.assign(obj, ...arrayOfObjects)

此选项将改变对象 obj 而不是创建新实例。

Object.assign很棒,我想出了另一种可能的解决方案,为喜欢使用它的人使用reduce


const arrayOfObjects = [
  { x: 'foo' },
  { y: 'bar' }
];

const obj = {
  hello: 'world'
};

let result = arrayOfObjects.reduce((prev, current) => ({
        ...prev,
        ...current
    }), obj)

console.log(result);
// {hello: "world", x: "foo", y: "bar"}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM