假设我们有对象数组。
调用Object.assign(...array)
在索引i
的对象覆盖索引为i-1
的对象中的现有属性的那些对象之间进行继承
例如:
var array=[{interf:'IPerson',name:'Someone'},{clss:'Person',name:'Ahmed'},{student:true}];
console.log(
Object.assign(...array) // Object.assign(array[0],array[1],array[2])
)

现在,使用Babel和建议的对象扩展语法,我们可以静态地执行此操作:
{...array[0],...array[1],...array[2]} // spread used for each object not for array
如何动态地执行此操作?
"传播语法"的上下文重叠。我的意思是如何使用扩展语法:
{}
进行继承
我尝试{...array}
并返回{0:<array[0]>,1:<array[1]>,2:<array[2]>}
与Object.assign(...array)
相同的输出。
答案 0 :(得分:29)
您正在寻找
var obj = Object.assign({}, ...array)
创建一个新对象,而不是改变array[0]
。
答案 1 :(得分:1)
在我看来,您正在寻找的方法是.concat()
返回一个新数组,该数组是目标和源的合并。
答案 2 :(得分:0)
如上所述,我要寻找的方法是.concat(),它创建一个数组的副本或将其扩展为另一个数组。
var a1 = [1,2,3], a2 = [];
a2 = a2.concate(a1);
// or ES5 shorten alternative
// var a1 = [1,2,3], a2 = [].concat(a1);
// or better ES6 shorten alternative
// a2 = [...a1];
a2.push(4);
console.log(a1, a2);
// a1 -> [1,2,3], a2 -> [1,2,3,4]
答案 3 :(得分:0)
使用数组对象分配对象
var a = {'name':'Ajay'}
var b = {批准者:[{id:'12'}]}
var c = Object.assign(a,b);
console.log(c);