嵌套的 es6 数组解构?

Nested es6 array destructuring?

是否可以嵌套解构?

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

鉴于:

let arr = [['foo'], ['bar']];

有没有更简单的方法:

let firstItem = arr[0][0];

啊想通了:

let [[firstItem]] = arr;

那将是等价的。

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

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

let [[x]] = [[1], [1, 2], [1, 2, 3]]

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

let [,[x]] = [[1], [1, 2], [1, 2, 3]]

这里,逗号用于跳过元素。像这样获取第三个子数组的第二个元素:

let [,,[,x]] = [[1], [1, 2], [1, 2, 3]]

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

let [,,[x, ...others]] = [[1], [1, 2], [1, 2, 3]] // x=1, others=[2, 3]

这里我只是假设多个项目只是为了让语法更清晰。

let arr = [['foo','foo1'], ['bar','bar1']];
var a,b,c,d;
[[a,b],[c,d]] = arr;
console.log(a,b,c,d); // foo,foo1,bar,bar1