Javascript 数组对象上的spread运算符不发射属性

Javascript 数组对象上的spread运算符不发射属性,javascript,redux,ecmascript-6,Javascript,Redux,Ecmascript 6,如何定义一个数组对象,该对象的属性将在使用扩展运算符时发出, 如果这样的事情是可能的(为什么不可能呢?) 我在redux应用程序中使用数组,因此当我使用return{…state,newElement}更新存储时,我会丢失状态中数组的属性 例如: const object1 = [1,2,3]; Object.defineProperty(object1, 'pizza', { value: 30, writable: true, enumerable:true, co

如何定义一个数组对象,该对象的属性将在使用扩展运算符时发出, 如果这样的事情是可能的(为什么不可能呢?)

我在redux应用程序中使用数组,因此当我使用
return{…state,newElement}
更新存储时,我会丢失状态中数组的属性

例如:

    const object1 = [1,2,3];

Object.defineProperty(object1, 'pizza', {
  value: 30,
  writable: true,
  enumerable:true,
  configurable:true
});


console.log(...object1);
// output: 1 2 3

// my expected output: 1 2 3 30

谢谢

混合对象数组的实际迭代器是数组的迭代器(即:

const arr=[];

console.log(arr.values===arr[Symbol.iterator])
预期结果是什么?如果上下文需要,扩展运算符将数组视为序列。首先需要将数组强制为对象
console.log({…object1})
“如果不是,为什么?”传播iterable只会通过其迭代器的结果。所以,对于数组,这就是它的值。如果要将某个内容附加到数组,并在展开时显示,则该值应为一个值。如果不是这样的话,我真的不知道你想在这里做什么。还有,你是如何使用ES5进行传播的?我有一个短得多的代码,可以实现同样的效果。将除第一行和最后一行以外的所有行替换为
object1.push(30)
。我真的看不出重新发明这段代码的价值。