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

时间:2016-11-28 15:50:13

标签: javascript

是否有一种简单的方法可以使用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'
};

是否可以通过巧妙使用点差运算符来实现这一目标?

3 个答案:

答案 0 :(得分:17)

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

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

const obj = {
  hello: 'world'
};

var result = Object.assign({}, obj, ...arrayOfObjects);
console.log(result)

答案 1 :(得分:3)

你可以使用Object.assign();

Object.assign(obj, ...arrayOfObjects)

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

答案 2 :(得分:1)

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"}
相关问题