如何从数组中解析出键(ES6)

时间:2017-11-21 08:45:22

标签: javascript ecmascript-6

我们刚刚根据预感制作了这段代码,并且它有效。我很确定这是可以接受的。我只是想确定一下:

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)

有更好的方法吗?

有任何疑虑或违规行为吗?

我找不到任何这方面的例子,只是尝试过,因为我记得:

['one', 'two', 'three']可以表示为对象:

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

这里没有列出: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

但是,它有效。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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)