La sintaxis de desestructuración de arrays de JavaScript es una manera concisa de extraer valores de un array y asignarlos a variables distintas.
En este ejemplo, cada valor del array numberOfMoons se asigna a su planeta correspondiente:
const numberOfMoons = [0, 2, 14];
const [venus, mars, neptune] = numberOfMoons;
neptune;
// => 14
En resumen:
En JavaScript, también existe la sintaxis de desestructuración para extraer propiedades de un objeto y asignarlas a variables distintas.
En este ejemplo, se extraen símbolos meteorológicos del objeto weather:
const weather = {
sun: '☀️',
sun_behind_small_cloud: '🌤️',
sun_behind_cloud: '⛅',
sun_behind_large_cloud: '🌥️',
sun_behind_rain_cloud: '🌦️',
cloud: '☁️',
cloud_with_rain: '🌧️',
cloud_with_snow: '🌨️',
cloud_with_lightning: '🌩️',
cloud_with_lightning_and_rain: '⛈️',
};
const { sun, cloud, cloud_with_lightning: thunder } = weather;
sun;
// => '☀️'
cloud;
// => '☁️'
thunder;
// => '🌩️'
En resumen:
Elyse, aprendiz de maga, continúa su entrenamiento. Tiene una baraja de cartas que quiere manipular.
Para que todo sea más fácil, por lo general solo empieza con cartas numeradas del 2 al 10, aunque algunos trucos pueden incluir cartas adicionales (con figuras).
Hay muchas maneras de barajar las cartas, pero para mantener la ilusión de magia es vital que no se use ningún método en particular, por ejemplo, Elyse no usa splice, slice, shift, unshift, push, at.
Tampoco se deben usar las formas de acceder a un array array[index] ni a un objeto (object[key] y object.key).
¿Quieres ayudar a Elyse a subir de nivel su magia?
Todas las funciones se pueden implementar usando los parámetros y un cuerpo de función con un solo return expression.
Elyse invocará la primera carta de la baraja sin usar array[index], .at(index) ni .shift().
Es como magia.
const deck = [5, 9, 7, 1, 8];
getFirstCard(deck);
// => 5
Elyse hace un juego de manos e invoca la segunda carta de la baraja sin usar array[index] ni .shift().
const deck = [3, 2, 10, 6, 7];
getSecondCard(deck);
// => 2
Elyse hará que las dos cartas de la baraja cambien de lugar. No necesita llamar a ninguna función.
const deck = [10, 7];
swapTwoCards(deck);
// => [7, 10]
Para hacer otro juego de manos, Elyse toma tres cartas y rápidamente mueve la carta de arriba al final, haciendo que la carta del medio sea la primera y que la que antes estaba abajo pase al medio. No necesita llamar a ninguna función.
const deck = [2, 6, 10];
shiftThreeCardsAround(deck);
// => [6, 10, 2]
Elyse separará la baraja en dos montones.
Luego le pide al espectador que elija uno de los dos montones, al que llamaremos chosen.
El montón disregarded ya no es relevante, y lo hace desaparecer.
No necesita llamar a ninguna función.
const deck = [5, 4, 7, 10];
const chosen = [5, 4];
const disregarded = [7, 10];
pickNamedPile({ chosen, disregarded });
// => [5, 4]
Por desgracia, el espectador sigue eligiendo el montón «equivocado», pero con algo de magia rápida e ingeniosa, Elyse renombra el montón chosen como disregarded y el montón disregarded como el montón chosen.
No necesita llamar a ninguna función.
const deck = [5, 4, 7, 10];
const chosen = [5, 4];
const disregarded = [7, 10];
swapNamedPile({ chosen, disregarded });
// => { chosen: [7, 10], disregarded: [5, 4] }
Regístrate en Exercism para aprender y dominar JavaScript con 37 conceptos159 ejercicios y mentoría humana real, todo gratis.