2017-01-23 30 views
1

如果我有一個對象,像這樣:將索引項目追加到對象的正確ES6方法是什麼?

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

它是對象擴展語法,但它在階段2標準p roposal。 http://redux.js.org/docs/recipes/UsingObjectSpreadOperator.html – Andrey

回答

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]}; 
+0

嘿,非常感謝Bergi! – Trip

相關問題