A linguagem JS fornece o recurso de "desempacotar"(unpacking) valores de arrays, propriedades
de objetos e atribui-los à variáveis. Abaixo, a sintaxe sobre o que foi explicado:
Sintaxe
let [var1, var2] = array | iterável ;
[var1, var2] = array | iterável; //vetor
Exemplo 11: array
let [a,b] = [100,200];
console.log(a,b)
Saída
100 200
Exemplo 12: objeto
let obj = { p1: 1, p2: 2, p3: 3 }
let [a,b,c] = Object.entries(obj) //obj -> iterável [chave,valor]
console.log(a,b,c) //
let [ch, val] = a //[ 'p1', 1 ] chave-valor
console.log(typeof(ch), typeof(val))
console.log(ch, val)
Saída
[ 'p1', 1 ] [ 'p2', 2 ] [ 'p3', 3 ]
string number
p1 1
Podemos atribuir elementos restantes utilizando o operador (...) prefixado ao nome da variável
de atribuição:
Sintaxe
let [varA, …varB] = array | iterável
Exemplo 13
let obj = [ 1, 2, 3 ]
let [a,...b] = obj
console.log(a)
console.log(b)
Saída
1
[ 2, 3 ]
Um valor default para a variável atribuída pode ser definido caso o valor seja undefined.
Os valores null e NaN não são aceitos para definição de valor default.
Sintaxe
let [varA = valor_default, varB, varN ] = array | iterável
Exemplo 14
let obj = [ undefined, 2, 3 ]
let [a=1,b,c] = obj
console.log(a,b,c)
Saída
1 2 3