Parcours
/
JavaScript
JavaScript
/
Exercices
/
Les enchantements d'Elyse
Les enchantements d'Elyse

Les enchantements d'Elyse

Exercice d'apprentissage

Introduction

En JavaScript, un tableau est une structure de type liste, sans longueur fixe, qui peut contenir n'importe quel type de primitives ou d'objets, même des types mélangés.

Pour créer un tableau, on place des éléments entre crochets []. Pour lire une valeur du tableau, on place l'indice entre crochets [] après l'identifiant. Les indices d'un tableau commencent à zéro.

Par exemple :

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

Pour récupérer le nombre d'éléments d'un tableau, utilise la propriété length :

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

Pour modifier un élément du tableau, on affecte une valeur à son indice :

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

Méthodes

Certaines des méthodes disponibles sur chaque objet Array permettent d'ajouter ou de retirer des éléments du tableau. En voici quelques-unes à garder en tête quand tu travailles sur cet exercice :

push

On peut ajouter une value à la fin d'un tableau avec .push(value). La méthode renvoie la nouvelle longueur du tableau.

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

pop

On peut retirer la dernière value d'un tableau avec .pop() La méthode renvoie la valeur retirée. La longueur du tableau diminue du fait de ce changement.

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

shift

On peut retirer la première value d'un tableau avec .shift() La méthode renvoie la valeur retirée. La longueur du tableau diminue du fait de ce changement.

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

unshift

On peut ajouter une value au début d'un tableau avec .unshift(value). La méthode renvoie la nouvelle longueur du tableau.

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

splice

On peut retirer une value située à un index précis d'un tableau avec .splice(index, 1). La méthode renvoie le ou les éléments retirés.

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

Ces méthodes sont plus puissantes que ce qui est décrit ici :

  • push et unshift te permettent d'ajouter plusieurs valeurs à la fois, en passant plus d'arguments. Ce n'est pas nécessaire pour terminer cet exercice.
  • Splice peut retirer plusieurs valeurs en augmentant le second argument. Ce n'est pas nécessaire pour terminer cet exercice.
  • Splice peut aussi ajouter plusieurs valeurs en les passant comme arguments après le deleteCount. Cela permet de remplacer des valeurs, ou d'insérer des valeurs au milieu d'un tableau (par exemple en retirant 0 élément). Ce n'est pas nécessaire pour terminer cet exercice.

Instructions

En apprentie magicienne, Elyse doit s'entraîner sur quelques bases. Elle a une pile de cartes qu'elle veut manipuler.

Pour simplifier un peu les choses, elle n'utilise que les cartes de 1 à 10, si bien que sa pile de cartes peut être représentée par un tableau de nombres. La position d'une carte donnée correspond à l'indice dans le tableau. Ainsi, la position 0 désigne la première carte, la position 1 la deuxième, et ainsi de suite.

Note

Toutes les fonctions, à deux exceptions près, doivent mettre à jour le tableau de cartes puis renvoyer le tableau modifié. C'est une façon courante de travailler, appelée le Builder pattern, qui permet d'enchaîner joliment les fonctions les unes aux autres.

Les deux exceptions sont getItem, qui doit renvoyer la carte à la position donnée, et checkSizeOfStack, qui doit renvoyer true si la taille donnée correspond.

1. Récupère une carte dans une pile

Pour piocher une carte, renvoie la carte à l'indice position de la pile donnée.

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

2. Échange une carte dans la pile

Fais un tour de passe-passe et échange la carte à l'indice position avec la carte de remplacement fournie. Renvoie la pile modifiée.

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

3. Insère une carte au sommet de la pile

Fais apparaître une carte en insérant une nouvelle carte au sommet de la pile. Renvoie la pile modifiée.

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

4. Retire une carte de la pile

Fais disparaître une carte en retirant de la pile la carte à la position donnée. Renvoie la pile modifiée.

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

5. Retire la carte du sommet de la pile

Fais disparaître une carte en retirant la carte au sommet de la pile. Renvoie la pile modifiée.

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

6. Insère une carte au bas de la pile

Fais apparaître une carte en insérant une nouvelle carte au bas de la pile. Renvoie la pile modifiée.

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

7. Retire une carte du bas de la pile

Fais disparaître une carte en retirant la carte au bas de la pile. Renvoie la pile modifiée.

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

8. Vérifie la taille de la pile

Vérifie si la taille de la pile est égale à stackSize ou non.

const stackSize = 4;
checkSizeOfStack([3, 2, 6, 4, 8], stackSize);
// => false
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
JavaScript Exercism

Prêt à commencer Les enchantements d'Elyse ?

Inscris-toi sur Exercism pour apprendre et maîtriser JavaScript avec 37 concepts159 exercices, et un vrai mentorat humain, le tout gratuitement.