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

Los encantamientos de Elyse

Ejercicio de aprendizaje

Introducción

En JavaScript, un arreglo es una estructura similar a una lista, sin longitud fija, que puede contener cualquier tipo de primitivas u objetos, incluso tipos mezclados.

Para crear un array, agrega elementos entre corchetes []. Para leer del array, coloca el índice entre corchetes [] después del identificador. Los índices de un array empiezan en cero.

Por ejemplo:

const numbers = [1, 'two', 3, 'four'];
numbers[2];
// => 3

Para obtener la cantidad de elementos que hay en un array, usa la propiedad length:

const numbers = [1, 'two', 3, 'four'];
numbers.length;
// => 4

Para cambiar un elemento del array, asignas un valor en el índice:

const numbers = [1, 'two', 3, 'four'];
numbers[0] = 'one';
numbers;
// => ['one', 'two', 3, 'four']

Métodos

Algunos de los métodos disponibles en todo objeto Array se pueden usar para agregar o quitar elementos del array. Estos son algunos para tener en cuenta al resolver este ejercicio:

push

Un value se puede agregar al final de un array con .push(value). El método devuelve la nueva longitud del array.

const numbers = [1, 'two', 3, 'four'];
numbers.push(5); // => 5
numbers;
// => [1, 'two', 3, 'four', 5]

pop

El último value se puede quitar de un array con .pop(). El método devuelve el valor eliminado. La longitud del array disminuirá por este cambio.

const numbers = [1, 'two', 3, 'four'];
numbers.pop(); // => four
numbers;
// => [1, 'two', 3]

shift

El primer value se puede quitar de un array con .shift(). El método devuelve el valor eliminado. La longitud del array disminuirá por este cambio.

const numbers = [1, 'two', 3, 'four'];
numbers.shift(); // => 1
numbers;
// => ['two', 3, 'four']

unshift

Un value se puede agregar al principio de un array con .unshift(value). El método devuelve la nueva longitud del array.

const numbers = [1, 'two', 3, 'four'];
numbers.unshift('one'); // => 5
numbers;
// => ['one', 1, 'two', 3, 'four']

splice

Un value en un index específico se puede quitar de un array con .splice(index, 1). El método devuelve el o los elementos eliminados.

const numbers = [1, 'two', 3, 'four'];
numbers.splice(2, 1, 'one'); // => [3]
numbers;
// => [1, 'two', 'one', 'four']
Advanced

Estos métodos son más potentes de lo que se describe aquí:

  • Tanto push como unshift te permiten agregar varios valores a la vez, si agregas más argumentos. Eso no es necesario para completar este ejercicio.
  • Splice puede quitar varios valores si aumentas el segundo argumento. Eso no es necesario para completar este ejercicio.
  • Splice también puede agregar varios valores si los agregas como argumentos después del deleteCount. Esto se puede usar para reemplazar valores o insertar valores en medio de un array (por ejemplo, quitando 0 elementos). Eso no es necesario para completar este ejercicio.

Instrucciones

Como futura maga, Elyse necesita practicar algunos conceptos básicos. Tiene una pila de cartas que quiere manipular.

Para que todo sea un poco más fácil, solo usa las cartas del 1 al 10, así que su pila de cartas se puede representar con un array de números. La posición de una carta corresponde al índice en el array. Es decir, la posición 0 se refiere a la primera carta, la posición 1 a la segunda, etc.

Note

Todas las funciones, excepto dos, deben actualizar el array de cartas y luego devolver el array modificado. Es una forma común de trabajar conocida como el patrón Builder, que te permite encadenar funciones de forma muy ordenada.

Las dos excepciones son getItem, que debe devolver la carta en la posición dada, y checkSizeOfStack, que debe devolver true si el tamaño dado coincide.

1. Obtén una carta de la pila

Para tomar una carta, devuelve la carta en el índice position de la pila dada.

const position = 2;
getItem([1, 2, 4, 1], position);
// => 4

2. Intercambia una carta en la pila

Haz un poco de juego de manos e intercambia la carta en el índice position por la carta de reemplazo proporcionada. Devuelve la pila ajustada.

const position = 2;
const replacementCard = 6;
setItem([1, 2, 4, 1], position, replacementCard);
// => [1, 2, 6, 1]

3. Inserta una carta en la parte superior de la pila

Haz aparecer una carta insertando una carta nueva en la parte superior de la pila. Devuelve la pila ajustada.

const newCard = 8;
insertItemAtTop([5, 9, 7, 1], newCard);
// => [5, 9, 7, 1, 8]

4. Elimina una carta de la pila

Haz desaparecer una carta quitando la carta en la position dada de la pila. Devuelve la pila ajustada.

const position = 2;
removeItem([3, 2, 6, 4, 8], position);
// => [3, 2, 4, 8]

5. Elimina la carta superior de la pila

Haz desaparecer una carta quitando la carta de la parte superior de la pila. Devuelve la pila ajustada.

removeItemFromTop([3, 2, 6, 4, 8]);
// => [3, 2, 6, 4]

6. Inserta una carta en la parte inferior de la pila

Haz aparecer una carta insertando una carta nueva en la parte inferior de la pila. Devuelve la pila ajustada.

const newCard = 8;
insertItemAtBottom([5, 9, 7, 1], newCard);
// => [8, 5, 9, 7, 1]

7. Elimina una carta de la parte inferior de la pila

Haz desaparecer una carta quitando la carta de la parte inferior de la pila. Devuelve la pila ajustada.

removeItemAtBottom([8, 5, 9, 7, 1]);
// => [5, 9, 7, 1]

8. Comprueba el tamaño de la pila

Comprueba si el tamaño de la pila es igual a stackSize o no.

const stackSize = 4;
checkSizeOfStack([3, 2, 6, 4, 8], stackSize);
// => false
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
JavaScript Exercism

¿Todo listo para empezar Los encantamientos de Elyse?

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