Graças ao ES6 e a outros aplicativos como o Babel, escrever em JavaScript tornou-se incrivelmente dinâmico, desde a nova sintaxe da linguagem até a análise personalizada, como o JSX. Tornei-me um grande fã do operador spread, três pontos que podem mudar a maneira como o senhor realiza tarefas em JavaScript. A seguir, apresento uma lista dos meus usos favoritos do operador spread no JavaScript!
Chamando funções sem aplicar
Até este ponto, chamamos o Function.prototype.apply
passando um array de argumentos, para chamar uma função com um determinado conjunto de parâmetros mantido por um array:
function doStuff (x, y, z) { } var args = [0, 1, 2]; // Call the function, passing args doStuff.apply(null, args);
Com o operador de spread, podemos evitar apply
e simplesmente chamar a função com o operador de spread antes da matriz:
doStuff(...args);
O código é mais curto, mais limpo e não há necessidade de usar um null
!
Combine Arrays (Combinar Matrizes)
Sempre houve um várias maneiras de combinar matrizesmas o operador de propagação oferece um novo método de combinação de matrizes:
arr1.push(...arr2) // Adds arr2 items to end of array arr1.unshift(...arr2) //Adds arr2 items to beginning of array
Se quiser combinar duas matrizes e colocar elementos em qualquer ponto da matriz, o senhor pode fazer o seguinte:
var arr1 = ['two', 'three']; var arr2 = ['one', ...arr1, 'four', 'five']; // ["one", "two", "three", "four", "five"]
Sintaxe mais curta do que outros métodos e, ao mesmo tempo, adiciona controle posicional!
Cópia de matrizes
Obter uma cópia de um array é uma tarefa frequente, algo que usamos Array.prototype.slice para fazer no passado, mas agora podemos usar o operador de propagação para obter uma cópia de uma matriz:
var arr = [1,2,3]; var arr2 = [...arr]; // like arr.slice() arr2.push(4)
Lembre-se: os objetos dentro da matriz ainda são por referência, portanto, nem tudo é “copiado”, por si só.
Converter argumentos ou NodeList em Array
Assim como na cópia de arrays, usamos o Array.Prototype.slice
para converter NodeList
e arguments
objetos e para matrizes verdadeiras, mas agora podemos usar o operador de propagação para concluir essa tarefa:
[...document.querySelectorAll('div')]
O senhor pode até mesmo obter os argumentos como uma matriz dentro da assinatura:
var myFn = function(...args) { // ... }
Não se esqueça de que o senhor também pode fazer isso com Array.from
!
Usando Math
Funções
É claro que o operador spread “espalha” uma matriz em diferentes argumentos, portanto, qualquer função em que o spread é usado como argumento pode ser usada por funções que podem aceitar qualquer número de argumentos.
let numbers = [9, 4, 7, 1]; Math.min(...numbers); // 1
O Math
é um exemplo perfeito do operador de propagação como o único argumento de uma função.
Desestruturação divertida
A desestruturação é uma prática divertida que estou usando bastante em meus projetos React, bem como em outros aplicativos Node.js. É possível usar a desestruturação e o operador rest juntos para extrair as informações em variáveis como o senhor quiser:
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 }; console.log(x); // 1 console.log(y); // 2 console.log(z); // { a: 3, b: 4 }
As propriedades restantes são atribuídas à variável após o operador de spread!
O ES6 não apenas tornou o JavaScript mais eficiente, mas também mais divertido. Todos os navegadores modernos suportam a nova sintaxe do ES6, portanto, se o senhor ainda não teve tempo de brincar com ela, definitivamente deveria. Se preferir fazer experiências independentemente do ambiente, não deixe de conferir meu post Primeiros passos com o ES6. De qualquer forma, o operador de spread é um recurso útil do JavaScript que o senhor deve conhecer!