我想将一个对象分配给数组,但是在赋值函数中出现此错误
期望至少1个参数,但有1个或更多
var obj1 = [{ abc: 'abc value' }];
var obj2 = { def: 'new def value'};
var obj3 = Object.assign(...obj1 , obj2) ;
答案 0 :(得分:0)
您需要使用如下的Object.assign链接
var obj1 = [{ abc: 'abc value' }];
var obj2 = { def: 'new def value' };
var obj3 = Object.assign(Object.assign({}, ...obj1), obj2 );
答案 1 :(得分:0)
在这种情况下,您应该使用数组扩展,Object.assign
用于将所有可枚举的自身属性从一个或多个源对象复制到目标对象,因此在这种情况下没有用。
请注意,数组扩展将浅,将obj1
的值复制到新数组中,并将obj2
作为最后一个元素。
var obj3 = [...obj1, obj2];
如果您要定位IE,则可以使用:
var obj3 = obj1.slice();
obj3.push(obj2);
注意:数组扩展不适用于IE。
从Object.assign
的MDN:
Object.assign()方法将所有可枚举的自身属性从一个或多个源对象复制到目标对象。它返回目标对象。
答案 2 :(得分:0)
根据您要执行的操作,您的方法可能会导致意外复制。
const obj1 = [{ abc: 'abc value' }, { abc: 'abc value at index 2' }];
const obj3 = Object.assign(...obj1 , obj2);
将导致数组中的最后一项覆盖具有匹配键的所有先前设置的值。
{ abc: 'abc value at index 2', def: 'new def value' }
如果您希望将某些内容复制到数组中的所有对象,则要在对象数组上使用.map()
。
const obj1 = [{ abc: 'abc value' }, { abc: 'abc value at index 2' }];
const obj3 = obj1.map(obj => Object.assign(obj, obj2));