Tracks
/
JavaScript
JavaScript
/
Ejercicios
/
Los encantamientos desestructurados de Elyse
Los encantamientos desestructurados de Elyse

Los encantamientos desestructurados de Elyse

Ejercicio de aprendizaje

Introducción

Desestructuración de arrays

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:

  • La sintaxis permite nombrar elementos según su posición en un array, además de intercambiar variables mediante reasignación.
  • La sintaxis de desestructuración está disponible dentro de los parámetros de función y en cualquier iterable.
  • Dejar una posición sin nombre (al no escribir ningún nombre de variable) ignora esa posición de forma silenciosa.

Desestructuración de objetos

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:

  • La sintaxis permite tanto extraer propiedades como extraerlas y cambiarles el nombre.
  • La sintaxis de desestructuración está disponible dentro de los parámetros de función.

Instrucciones

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).

Note

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?

Advanced

Todas las funciones se pueden implementar usando los parámetros y un cuerpo de función con un solo return expression.

1. Obtén la primera carta

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

2. Obtén la segunda carta

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

3. Intercambia dos cartas

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]

4. Rota tres cartas

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]

5. Elige el montón con nombre

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]

5. Intercambia el montón elegido

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] }
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
JavaScript Exercism

¿Todo listo para empezar Los encantamientos desestructurados de Elyse?

Regístrate en Exercism para aprender y dominar JavaScript con 37 conceptos159 ejercicios y mentoría humana real, todo gratis.