13 útiles líneas simples de JavaScript

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?



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


All Articles