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

Tri*_*rip 1 javascript immutability ecmascript-6 reactjs redux

如果我有一个像这样的对象:

var state = { 10: [Object], 12: [Object, Object], 13: [Object, Object, Object] }
Run Code Online (Sandbox Code Playgroud)

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

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

  return  {
    ...state,
    [12]:
      state[12], Object
  }
Run Code Online (Sandbox Code Playgroud)

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

var state = { 10: [Object], 12: [Object, Object, Object], 13: [Object, Object, Object] }
                                                 ^---- One extra object at the end of `12`
Run Code Online (Sandbox Code Playgroud)

Ber*_*rgi 5

听起来像你在寻找

return Object.assign({}, state, {12: state[12].concat([newObject])});
Run Code Online (Sandbox Code Playgroud)

或者使用ES6阵列扩展语法

return Object.assign({}, state, {12: [...state[12], newObject]});
Run Code Online (Sandbox Code Playgroud)

或者用实验对象传播语法

return {...state, 12: [...state[12], newObject]};
Run Code Online (Sandbox Code Playgroud)