2017-11-21 4 views
4

ちょうどこのコードを練習に基づいて作成しました。私はそれが容認できると確信しています。私はちょうど確認する:配列からキーを解体する方法(ES6)

const state = { inProgress: true } 
 
const actions = 'COMPLETE_RICE' 
 
const change = { inProgress: false, rice: 'cooked' } 
 

 
// Is this destructuring OK? 
 
const { 
 
    0: newState, 
 
    1: newActions, 
 
    2: newChange, 
 
} = [state, actions, change] 
 

 
console.log('New State:', newState) 
 
console.log('New Actions:', newActions) 
 
console.log('New Change:', newChange)

これを行うには良い方法はありますか?

不具合や違反?

私はこのいずれかの例を見つけると、私がいることを思い出したので、それだけを試したことができません:それはまさにここに記載されていない

{ 
    0: 'one', 
    1: 'two', 
    2: 'three' 
} 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

['one', 'two', 'three']は、オブジェクトのように表すことができます。

しかし、それは動作します。

+0

単純な配列と構造化代入ない理由は確かに動作しますが、最終的な結果はその配列のプロトタイプの機能を継承していないのだろうか? 'const [newState、newActions、newChange] = [状態、動作、変更]' – 3Dos

+0

オブジェクトを使ってこのようなvarsを抽出することができます。結果は 'const [newState、newActions、newChange] = [state、actions、change]'と同じですが、あなたがやっているようなオブジェクトを使うことはあまりいいことではありません。それは動作しますが、それはなぜそれを行う奇妙な方法:) – dfsq

答えて

6

あなたはdestructuring assignmentのための配列を使用することができます。配列は配列を与えるので、インデックスは必要ありません。

const state = { inProgress: true } 
 
const actions = 'COMPLETE_RICE' 
 
const change = { inProgress: false, rice: 'cooked' } 
 

 
// Is this destructuring OK? 
 
const [newState, newActions, newChange] = [state, actions, change]; 
 

 
console.log('New State:', newState) 
 
console.log('New Actions:', newActions) 
 
console.log('New Change:', newChange)

+0

ああ、笑、あなたは私が最初にそれを試みたと思うだろう。ありがとう! – agm1984

2

代わりのオブジェクトとして配列を構造化代入、array destructuringを使用します。

const state = { inProgress: true } 
 
const actions = 'COMPLETE_RICE' 
 
const change = { inProgress: false, rice: 'cooked' } 
 

 
const [newState, newActions, newChange] = [state, actions, change] 
 

 
console.log('New State:', newState) 
 
console.log('New Actions:', newActions) 
 
console.log('New Change:', newChange)

関連する問題