A atribuição por desestruturação de array é uma forma concisa de extrair valores de um array. Sua sintaxe é parecida com a de uma expressão de array literal, mas do lado esquerdo da atribuição em vez do direito.
const frenchNumbers = ['quatre-vingts', 'quatre-vingt-dix', 'cent'];
const [french80, french90, french100] = frenchNumbers;
french80;
// => 'quatre-vingts'
french90;
// => 'quatre-vingt-dix'
french100;
// => 'cent'
Como as variáveis são mapeadas para os valores do array por posição, a sintaxe de desestruturação pode ser usada para atribuir ou reatribuir várias variáveis em uma única expressão.
let [a, b] = ['world', 'hello'];
[b, a] = [a, b];
a;
// => 'hello'
b;
// => 'world'
Isso também funciona com arrays aninhados.
let [a, b, c] = ['orange', 'purple', 'green'];
[[a, b], c] = [[c, a], b];
a;
// => 'green'
b;
// => 'orange'
c;
// => 'purple'
A sintaxe permite pular valores durante o mapeamento, por exemplo, para ignorar posições específicas do array.
No exemplo abaixo, imagine que temos uma função getUserInfo que retorna um array com o primeiro nome, o sobrenome e o endereço de um usuário.
getUserInfo();
// => ["Valerie", "Noir", "Sunny Lane 523"]
const [, , streetAddress] = getUserInfo();
streetAddress;
// => "Sunny Lane 523"
A atribuição também não precisa usar todos os valores.
const [firstName, lastName] = getUserInfo();
firstName;
// => "Valerie"
lastName;
// => "Noir"
É até possível extrair mais valores do que o array contém; as variáveis que sobrarem vão receber undefined. Isso pode ser útil quando não se sabe de antemão quantos valores existem.
const pickAtLeastOne = ['first choice', 'second choice'];
const [first, second, third, fourth] = pickAtLeastOne;
first;
// => "first choice"
second;
// => "second choice"
third;
// => undefined
fourth;
// => undefined
A atribuição por desestruturação de array pode fornecer valores padrão caso não haja nenhum no array de origem.
const [first, second, third = 'none selected', fourth] = pickAtLeastOne;
third;
// => 'none selected'
fourth;
// => undefined