原文:How to Destructure an Array in JavaScript,作者:Madison Kanna

数组解构是一种从存储在数组中的数据中提取多个值的有效方法。

在这篇文章中,我们将学习数组解构。我们将通过示例来了解数组解构如何工作的细节。

我还制作了本教程的视频:

让我们开始吧。

首先打开网络浏览器,然后打开 JavaScript 控制台,我们将在那里编写代码。你可以在这里找到关于如何打开控制台的说明。

如何解构数组中的元素

接下来,我们将创建一个数组,名为 animals,并添加值 dog、cat 和 horse。

const animals = ['Dog', 'Cat', 'Horse']

接下来,假设我们要创建一个只有 dog 值的变量。我们称这个变量为 dogVar,是 dog 变量的缩写。在 ES6 中引入数组解构之前,我们会这样做:

dogVar = animals[0]

接下来我们希望 cat 和 horse 的值也包含在它们自己的变量中,这样写:

const catVar = aniamls[1]

const horseVar = animals[2]

在这里,我们编写了 3 行单独的代码。让我们改用数组解构,写 1 行代码而不是 3 行。

解构如何工作

使用数组解构,我们可以只写 1 行代码:

const [firstElement, secondElement, thirdElement] = animals

看起来我们在这里创建了一个数组,但并不是。我们正在解构这个数组。解构可以将数组中的值分解为不同的变量。

解构获取左侧数组中的每个变量,并将其映射到 animals 数组中相同索引处的元素。

当我们写出 firstElement 时,我们是说我们想要访问动物数组中的第一个元素并将其分配给 firstElement 的变量。

使用 secondElement,我们说我们想要访问数组中的第二个元素并将其分配给 secondElement 的变量。thirdElement 变量也是如此。

这里的关键点是这些名称 [firstElement, secondElement, thirdElement] 无关紧要。重要的是顺序。

解构的顺序将告诉我们数组中的哪些元素分配给了哪些变量。

让我们看看解构数组的第一行代码。让我们把它的这一部分 [firstElement, secondElement, thirdElement] 想象成一个数组。

如果这是一个数组,firstElement 将位于数组的位置 0。JavaScript 将看到这个 firstElement 变量位于位置 0,然后它将进入 animals 数组并找到位于位置 0 的元素,并将该元素分配给变量 firstElement

(请记住,数组是基于零索引的,这意味着我们从 0 而不是 1 开始计算它们。)

解构时,我们可以给变量取任何我们想要的名字。同样,重要的是顺序,而不是命名。例如我们可以这样写:

const [dog, cat, horse] = animals

现在我们有了所有的值。如果我们写出 dog, cat, horse,我们可以得到所有具有正确值的变量名:

dog // returns 'Dog'

cat // returns 'Cat'

horse // returns 'Horse'

如果我们回到这个例子开头的代码,我们有 3 行代码来为 dog、cat 和 horse 创建变量。使用数组解构,我们只使用 1 行代码。解构只是一条捷径。这是一种从数组中提取多个值的简单、快速的方法。

但是,如果你只想从数组中获取一个元素,比如数组中的第二个或第三个元素,然后将该元素存储在一个变量中呢?

如何解构数组中的第二个或第三个元素

接下来,假设我们有一个数组 Fruits

const Fruits = ['banana', 'apple', 'orange']

如果我们只想获取 apple 的值,并将其分配给 apple 的变量名怎么办?

我们不能只是写 const [apple] = animals。为什么不能?如果我们这样做,那么变量 apple 的值将出错,是 'banana'。为什么是这样?

这是因为,顺序很重要。使用 const [apple] = fruits,JavaScript 会查看 apple,发现它位于位置 0,然后在 Fruits 数组中的位置 0 处找到元素,即 'banana',并将该元素分配给 apple 变量。

我们不希望这种情况发生,那么应该怎么写呢?

我们应该写:const [, apple] = fruits

这个逗号充当一种占位符,告诉 JavaScript 就像第一个元素在那里一样,所以这个 apple 变量现在是这里的第二个元素。换句话说,apple 现在在位置 1

假设我们只需要变量中的 orange 值,而不关心 apple 或 banana 元素。我们可以再次像这样使用逗号:

const [, , orange] = fruits

如果我们在控制台中写出 orange,会看到我们成功创建了 orange 变量,并且它的值为 'orange'

最后要注意的一件事是,如果你学习 React,你可能会经常使用带有 React hooks 的数组解构。例如,你可能会看到如下内容:

const [count, setCount] = useState(0)

好啦,我们已经了解了数组解构的所有内容。

感谢你阅读本文!

如果你喜欢这篇文章,请加入我的编程俱乐部,我们每周日一起进行编程挑战,并在学习新技术时互相支持。

如果你对这篇文章有任何反馈或问题,可以在 Twitter @madisonkanna 联系我。