El autor del artículo, cuya traducción publicamos hoy, dice que ha estado programando en JavaScript durante muchos años. Durante este tiempo, recopiló una colección de excelentes archivos de una sola línea: fragmentos de código, sorprendentemente potentes, dado que caben en una sola línea. Según él, las grandes oportunidades también son una gran responsabilidad, por lo que debe usar estas construcciones con cuidado, tratando de asegurarse de que no perjudiquen la legibilidad de los programas.

Aquí hay 13 jugadores de una sola línea. Ejemplos preparados con Node.js v11.x. Si los usa en otro entorno, esto puede afectar su ejecución.
1. Coacción de valores a tipo lógico
Aquí se explica cómo convertir un valor a un tipo booleano:
const myBoolean = !!myVariable;
La doble negación (
!!
) es necesaria para que un valor que sea verdadero desde el punto de vista de las reglas de JavaScript se convierta en
true
y falso en
false
.
2. Deshacerse de valores duplicados en matrices
Aquí se explica cómo eliminar valores duplicados de una matriz:
const deDupe = [...new Set(myArray)];
Set
estructuras de datos solo almacena valores únicos. Como resultado, el uso de dicha estructura de datos y sintaxis extendida le permite crear una nueva matriz basada en
myArray
que no tiene valores duplicados.
3. Crear y establecer propiedades de objetos por condición
Para establecer las propiedades de los objetos con el operador
&&
, puede usar la sintaxis de propagación:
const myObject = { ...myProperty && { propName: myProperty } };
Si, como resultado del cálculo del lado izquierdo de la expresión, se recibe algo que JS percibe como un valor falso, entonces
&&
no realizará más cálculos y no se creará y establecerá una nueva propiedad.
myObject
estará vacío. Si la construcción
...myProperty
devuelve algún resultado que JS percibe como verdadero, gracias a la construcción
&&
, la propiedad
propName
aparece en el objeto, que almacena el valor recibido.
4. Fusionar objetos
Aquí se explica cómo crear un nuevo objeto en el que se combinarán otros dos objetos:
const mergedObject = { ...objectOne, ...objectTwo };
Este enfoque se puede utilizar para organizar la fusión de un número ilimitado de objetos. Además, si los objetos tienen propiedades con los mismos nombres, solo una de esas propiedades permanecerá en el objeto final, que pertenece a uno de los objetos originales, que se encuentra a la derecha de los demás. Tenga en cuenta que aquí se utiliza una copia pequeña de las propiedades del objeto.
5. Intercambio de valores variables.
Para intercambiar valores entre dos variables sin usar una variable auxiliar, puede hacer esto:
[varA, varB] = [varB, varA];
Después de eso, lo que estaba en
varA
entra en
varB
, y viceversa. Esto es posible gracias al uso de mecanismos internos de desestructuración.
6. Eliminar valores falsos de la matriz
Aquí se explica cómo eliminar todos los valores que se consideran falsos en JavaScript de una matriz:
const clean = dirty.filter(Boolean);
Durante esta operación, los valores como
null
,
undefined
,
false
,
0
, así como las líneas vacías, se eliminarán de la matriz.
7. Convertir números a cadenas
Para convertir los números almacenados en la matriz en su representación de cadena, puede hacer esto:
const stringArray = numberArray.map(String);
Los elementos de cadena de la matriz durante dicha conversión seguirán siendo cadena.
También puede realizar la transformación inversa convirtiendo valores del tipo
String
a valores del tipo
Number
:
const numberArray = stringArray.map(Number);
8. Recuperando valores de propiedad de objeto
Aquí se explica cómo extraer el valor de la propiedad de un objeto y escribirlo en una constante cuyo nombre sea diferente del nombre de esta propiedad:
const { original: newName } = myObject;
Con esta construcción, se creará una nueva constante,
newName
, en la que se
newName
el valor de la propiedad
original
del objeto
myObject
.
9. Formateo de código JSON
Aquí se explica cómo convertir el código JSON a un aspecto legible:
const formatted = JSON.stringify(myObj, null, 2);
El método
stringify
toma tres parámetros. El primero es un objeto JavaScript. El segundo, opcional, es una función que se puede utilizar para procesar el código JSON resultante de la conversión del objeto. El último parámetro indica cuántos espacios se deben usar al sangrar en código JSON. Si omite el último parámetro, todo el código JSON recibido será una cadena larga. Si el objeto
myObj
tiene referencias circulares, no se puede convertir al formato JSON.
10. Cree rápidamente matrices numéricas
Aquí se explica cómo crear una matriz y llenarla con números:
const numArray = Array.from(new Array(52), (x, i) => i);
El primer elemento de dicha matriz tiene un índice de 0. El tamaño de la matriz se puede especificar utilizando un literal numérico o una variable. Aquí creamos una matriz de 52 elementos que, por ejemplo, se pueden usar para almacenar datos sobre una baraja de cartas.
11. Creación de códigos para la autenticación de dos factores.
Para generar el código de seis dígitos utilizado en los mecanismos de autenticación de dos factores o en otros similares, puede hacer esto:
const code = Math.floor(Math.random() * 1000000).toString().padStart(6, "0");
Tenga en cuenta que el número de ceros en el número por el cual el resultado devuelto por
Math.random()
debe multiplicarse debe coincidir con el primer parámetro (
targetLength
) del método
padStart
.
12. Mezcla de matriz
Para barajar una matriz sin saber exactamente qué contiene, puede hacer esto:
myArray.sort(() => { return Math.random() - 0.5});
Hay mejores algoritmos para mezclar matrices. Por ejemplo, el algoritmo de barajado de Fisher-Yates. Lea sobre diferentes algoritmos para mezclar matrices
aquí .
13. Crear copias profundas de objetos
El método de copia profunda de los objetos propuestos aquí no difiere en un rendimiento particularmente alto. Pero si necesita resolver este problema usando una línea, puede usar el siguiente código:
const myClone = JSON.parse(JSON.stringify(originalObject));
Cabe señalar que si hay enlaces circulares en el objeto
originalObject
, una copia fallará. Esta técnica se recomienda para usar en objetos simples que usted mismo cree.
Se puede crear una copia superficial del objeto utilizando la sintaxis de propagación:
const myClone = { ...orignalObject };
Resumen: al combinar y expandir código de una sola línea
Hay muchas formas de combinar los fragmentos de código presentados aquí. Esto le permite resolver muchos problemas con su ayuda y al mismo tiempo utilizar construcciones de lenguaje muy compactas. El autor de este material cree que durante la evolución de JavaScript, aparecerán nuevas características que ayudarán a escribir código compacto y potente.
Estimados lectores! ¿Qué ejemplos de líneas simples JS útiles agregaría a este material?

