13 liners únicos de JavaScript úteis

O autor do artigo, cuja tradução estamos publicando hoje, diz que ele programa em JavaScript há muitos anos. Durante esse período, ele coletou uma coleção de excelentes arquivos de linha única - fragmentos de código, surpreendentemente poderosos, uma vez que se encaixam em uma linha. Segundo ele, grandes oportunidades também são uma grande responsabilidade; portanto, você precisa usar esses designs com cuidado, tentando garantir que eles não prejudiquem a legibilidade dos programas.



Aqui estão 13 jogadores de linha única. Exemplos preparados usando o Node.js v11.x. Se você os usar em outro ambiente, isso poderá afetar a execução deles.

1. Coerção de valores para o tipo lógico


Veja como converter um valor em um tipo booleano:

const myBoolean = !!myVariable; 

A negação dupla ( !! ) é necessária para que um valor verdadeiro do ponto de vista das regras JavaScript seja convertido em true e falso em false .

2. Livrar-se de valores duplicados em matrizes


Veja como remover valores duplicados de uma matriz:

 const deDupe = [...new Set(myArray)]; 

Set estruturas de dados Set armazenam apenas valores exclusivos. Como resultado, o uso dessa estrutura de dados e sintaxe de propagação permite criar uma nova matriz baseada no myArray que não possui valores duplicados.

3. Criando e configurando propriedades de objetos por condição


Para definir propriedades de objetos usando o operador && , você pode usar a sintaxe de propagação:

 const myObject = { ...myProperty && { propName: myProperty } }; 

Se, como resultado do cálculo do lado esquerdo da expressão, for recebido algo que JS percebe como um valor falso, && não realizará cálculos adicionais e uma nova propriedade não será criada e configurada. myObject estará vazio. Se a construção ...myProperty retornar algum resultado que JS perceba como verdadeiro, graças à construção && , a propriedade propName aparecerá no objeto, que armazena o valor recebido.

4. Mesclando objetos


Veja como criar um novo objeto no qual outros dois objetos serão combinados:

 const mergedObject = { ...objectOne, ...objectTwo }; 

Essa abordagem pode ser usada para organizar a fusão de um número ilimitado de objetos. Além disso, se os objetos tiverem propriedades com os mesmos nomes, apenas uma dessas propriedades permanecerá no objeto final, que pertence àquele dos objetos originais, localizado à direita dos outros. Observe que pequenas cópias das propriedades do objeto são usadas aqui.

5. Troca de valores variáveis


Para trocar valores entre duas variáveis ​​sem usar uma variável auxiliar, você pode fazer isso:

 [varA, varB] = [varB, varA]; 

Depois disso, o que estava em varA entra no varB e vice-versa. Isso é possível graças ao uso de mecanismos internos de desestruturação.

6. Removendo valores falsos da matriz


Veja como remover todos os valores considerados falsos no JavaScript de uma matriz:

 const clean = dirty.filter(Boolean); 

Durante esta operação, valores como null , undefined , false , 0 e linhas vazias serão excluídos da matriz.

7. Convertendo números em strings


Para converter os números armazenados na matriz em sua representação de sequência, você pode fazer o seguinte:

 const stringArray = numberArray.map(String); 

Os elementos de string da matriz durante essa conversão permanecerão em string.

Você também pode executar a transformação inversa convertendo valores do tipo String em valores do tipo Number :

 const numberArray = stringArray.map(Number); 

8. Recuperando Valores da Propriedade do Objeto


Veja como extrair o valor da propriedade de um objeto e gravá-lo em uma constante cujo nome seja diferente do nome dessa propriedade:

 const { original: newName } = myObject; 

Usando essa construção, uma nova constante será criada, newName , na qual o valor da propriedade original do objeto myObject será gravado.

9. Formatando código JSON


Veja como converter o código JSON em uma aparência legível:

 const formatted = JSON.stringify(myObj, null, 2); 

O método stringify usa três parâmetros. O primeiro é um objeto JavaScript. A segunda, opcional, é uma função que pode ser usada para processar o código JSON resultante da conversão do objeto. O último parâmetro indica quantos espaços devem ser usados ​​ao recuar no código JSON. Se você omitir o último parâmetro, todo o código JSON recebido será uma cadeia longa. Se o objeto myObj tiver referências circulares, ele não poderá ser convertido para o formato JSON.

10. Crie rapidamente matrizes numéricas


Veja como criar uma matriz e preenchê-la com números:

 const numArray = Array.from(new Array(52), (x, i) => i); 

O primeiro elemento dessa matriz possui um índice de 0. O tamanho da matriz pode ser especificado usando um literal numérico ou uma variável. Aqui, criamos uma matriz de 52 elementos, que, por exemplo, podem ser usados ​​para armazenar dados sobre um baralho de cartas.

11. Criação de códigos para autenticação de dois fatores


Para gerar o código de seis dígitos usado nos mecanismos de autenticação de dois fatores ou em outros similares, você pode fazer o seguinte:

 const code = Math.floor(Math.random() * 1000000).toString().padStart(6, "0"); 

Observe que o número de zeros no número pelo qual o resultado retornado por Math.random() deve ser multiplicado deve corresponder ao primeiro parâmetro ( targetLength ) do método padStart .

12. Mistura de matriz


Para embaralhar uma matriz sem saber exatamente o que ela contém, você pode fazer o seguinte:

 myArray.sort(() => { return Math.random() - 0.5}); 

Existem algoritmos melhores para misturar matrizes. Por exemplo, o algoritmo de embaralhamento de Fisher-Yates. Leia sobre diferentes algoritmos para misturar matrizes aqui .

13. Criando cópias profundas de objetos


O método de cópia profunda dos objetos aqui proposto não difere no desempenho particularmente alto. Mas se você precisar solucionar esse problema usando uma linha única, poderá usar o seguinte código:

 const myClone = JSON.parse(JSON.stringify(originalObject)); 

Deve-se notar que, se houver links circulares no originalObject , uma cópia dele falhará. Essa técnica é recomendada para uso em objetos simples criados por você.

Uma cópia superficial do objeto pode ser criada usando a sintaxe de propagação:

 const myClone = { ...orignalObject }; 

Resumo: na combinação e expansão do código de linha única


Existem várias maneiras de combinar os trechos de código apresentados aqui. Isso permite que você resolva muitos problemas com a ajuda deles e, ao mesmo tempo, use construções de linguagem muito compactas. O autor deste material acredita que, durante a evolução do JavaScript, aparecerão novos recursos que ajudarão a escrever um código compacto e poderoso.

Caros leitores! Quais exemplos de linhas de alinhamento JS úteis você adicionaria a este material?



Source: https://habr.com/ru/post/pt456338/


All Articles