2017-01-23 4 views
1

私はそうのようなオブジェクトがある場合:インデックスされたアイテムをオブジェクトに追加するための適切なES6の方法は何ですか?

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

を、私は、元のオブジェクトを変異することなく、サブアレイのうちの1つの端部に新しいオブジェクトを追加したいと思います。代わりに、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払い戻し。 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

関連する問題