将索引项附加到Object的正确ES6方法是什么?

时间:2017-01-23 15:25:40

标签: javascript reactjs ecmascript-6 redux immutability

如果我有这样的对象:

var state = { 10: [Object], 12: [Object, Object], 13: [Object, Object, Object] }

我想在其中一个子数组的末尾添加一个新对象,而不会改变原始对象。相反,通过ES6返回一个新对象:

我无可非议地理解不可变对象和ES6。这是我第一次尝试这个,但这(显而易见的原因)不起作用。

  return  {
    ...state,
    [12]:
      state[12], Object
  }

有人知道产生这个的正确语法吗? :

var state = { 10: [Object], 12: [Object, Object, Object], 13: [Object, Object, Object] }
                                                 ^---- One extra object at the end of `12`

1 个答案:

答案 0 :(得分:5)

听起来像是在寻找

return Object.assign({}, state, {12: state[12].concat([newObject])});

或使用ES6阵列扩展语法

return Object.assign({}, state, {12: [...state[12], newObject]});

或使用实验对象传播语法

return {...state, 12: [...state[12], newObject]};