� uma express�o que permite extrair dados de um Array ou Object em vari�veis distintas.
Guia do artigo:
Vis�o geral
Este recurso permite extrair de um Array ou Object valores e transformar em uma vari�vel ou constante, no exemplo abaixo utilizamos o destructuring para converter objetos de um Array em uma constante:
const getVencedoresTorneio = () => [
{ id: 1, nome: 'Tiago' },
{ id: 2, nome: 'Pedro' },
{ id: 3, nome: 'Maria' }
]
const notifica = (...nomes) => console.log(
`vencedores do torneio:\n%s`,
nomes.map((v, k) => `${++k}� lugar - $`).join('\n')
)
const [ usuarioA, usuarioB ] = getVencedoresTorneio()
notifica(usuarioA.nome, usuarioB.nome)
// vencedores do torneio:
// 1� lugar - Tiago
// 2� lugar - PedroSintaxe
const [ itemA, itemB ] = [ valorA, valorB ]
const ({ itemA itemB } = { itemA: 1, itemB: 2 })Na pr�tica
Exemplo 1
� comum a necessidade de recuperar um item armazenado em um Array e atribu�-lo a uma vari�vel. Nestes casos podemos fazer como no exemplo abaixo:
const totais = [ 10, 20, 30 ]
const [ valorA, valorB, valorC ] = totais
console.log(valorA) // 10
console.log(valorB) // 20
console.log(valorC) // 30Exemplo 2
� poss�vel extrair items de um Array e armazenar o resto:
const [ valorA, valorB, ..valorC ] = [ 10, 20, 30, 40, 50, 60 ]
console.log(valorA) // 10
console.log(valorB) // 20
console.log(valorC) // [ 30, 40, 50, 60 ]Exemplo 3
Podemos pr�-definir valores quando n�o exista determinado elemento em um Array, para que quando seja feita a extra��o deste resultado para uma vari�vel ele receba um valor padr�o:
const [ itemA = 5, itemB = 10 ] = [ 20 ]
console.log(itemA) // 20
console.log(itemB) // 10Exemplo 4
Podemos extrair valores de objetos literais utilizando o nome de suas propriedades, como no exemplo abaixo:
const usuario = { nome: 'Pedro', idade: 18 }
const { nome, idade } = usuario
console.log(nome) // Pedro
console.log(idade) // 185. Valores pr�-determinados em objetos
Podemos tamb�m utilizar os valores pr� definidos em objetos assim como � feito nos Arrays:
const usuario = { idade: 18, temFilhos: true }
const { nome = 'Jonas', idade, temFilhos } = usuario
console.log(nome) // Jonas
console.log(idade) // 18
console.log(temFilhos) // true6. Extraindo valores de objetos
Podemos capturar os resultados que n�o tenham sido extra�dos como vari�veis:
const usuario = { nome: 'Pedro', idade: 18, temFilhos: true }
const { nome, ...outrosDados } = usuario
console.log(nome) // Pedro
console.log(outrosDados) // { idade: 18, temFilhos: true }Perceba que ao colocar retic�ncias precedendo a vari�vel outrosDados todos os valores existentes no objeto, exceto o nome, que havia sido extra�do, foram adicionados a ela como um novo objeto.
Compatibilidade
| Node.JS ( V8) | 6.4.0 |
| Safari ( WebKit) | 11.1 |
| Chrome ( V8) | 68 |
| Microsoft Edge ( ChakraCore) | 17 |
| Firefox ( Gecko) | 61 |
Nota: O Opera utiliza atualmente grande parte do c�digo do Chrome como base para o seu pr�prio desenvolvimento e por isso ele n�o � mencionado nesta listagem.