嵌套的es6数组解构?

chr*_*lee 7 destructuring ecmascript-6

嵌套解构是否可能?

例如,我想要数组中的第一项,并在该数组中我想要该子数组的第一项.

鉴于:

let arr = [['foo'], ['bar']];
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法:

let firstItem = arr[0][0];
Run Code Online (Sandbox Code Playgroud)

chr*_*lee 8

啊想出来了:

let [[firstItem]] = arr;
Run Code Online (Sandbox Code Playgroud)

那就等同了.


Ahm*_*ous 6

是的,可以解构嵌套数组(和对象)。

让我们考虑一下这个嵌套数组[[1], [1, 2], [1, 2, 3]],它是一个2D数组。要获得第一个子数组的第一个元素,

let [[x]] = [[1], [1, 2], [1, 2, 3]]
Run Code Online (Sandbox Code Playgroud)

要获取第二个子数组的第一个元素,

let [,[x]] = [[1], [1, 2], [1, 2, 3]]
Run Code Online (Sandbox Code Playgroud)

在这里,逗号用于跳过元素。要获得第三个子数组的第二个元素,如下所示:

let [,,[,x]] = [[1], [1, 2], [1, 2, 3]]
Run Code Online (Sandbox Code Playgroud)

如果要检索数组中的特定元素以及其余元素,则可以使用rest运算符...。例如,要分别获取第三个子数组的第一个元素和其余元素,

let [,,[x, ...others]] = [[1], [1, 2], [1, 2, 3]] // x=1, others=[2, 3]
Run Code Online (Sandbox Code Playgroud)