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?

