如果我有这样的对象:
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`
答案 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]};