Object.assign(...array) 的替代

Alternative of Object.assign(...array)

假设我们有对象数组。

调用 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

如何动态地做到这一点?

"spread syntax" 的上下文有重叠。我的意思是如何对两者使用扩展语法:

?

我尝试了 {...array} 并且它 returns {0:<array[0]>,1:<array[1]>,2:<array[2]>}Object.assign(...array).[=20 的输出 不同 =]

您正在寻找

var obj = Object.assign({}, ...array)

创建一个新对象而不是改变 array[0]

在我看来,您正在寻找的方法是 .concat()

Returns 一个新数组,它是目标和源的合并。

我认为你正在寻找的方法,如上所述,是 .concat(),它创建一个数组的副本并用另一个数组扩展它。

var a1 = [1,2,3], a2 = [];

a2 = a2.concat(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]

用数组对象分配对象:

var a = {
  'name': 'Ajay'
}

var b = {
  approvers: [{
    id: '12'
  }]
}

var c = Object.assign(a, b);
console.log(c);