是否有一种简单的方法可以使用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'
};
是否可以通过巧妙使用点差运算符来实现这一目标?
答案 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"}