Track
/
JavaScript
JavaScript
/
Esercizi
/
Gli incantesimi di Elyse
Gli incantesimi di Elyse

Gli incantesimi di Elyse

Esercizio di apprendimento

Introduzione

In JavaScript, un array è una struttura simile a una lista, senza lunghezza fissa, che può contenere qualsiasi tipo di valore primitivo o di oggetto, anche di tipi misti.

Per creare un array, aggiungi gli elementi tra parentesi quadre ([]). Per leggere dall'array, metti l'indice tra parentesi quadre ([]) dopo l'identificatore. Gli indici di un array partono da zero.

Ad esempio:

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

Per ottenere il numero di elementi contenuti in un array, usa la proprietà length:

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

Per modificare un elemento dell'array, assegni un valore in corrispondenza dell'indice:

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

Metodi

Alcuni dei metodi disponibili su ogni oggetto Array si possono usare per aggiungere o rimuovere elementi dall'array. Ecco quelli da tenere presenti mentre lavori su questo esercizio:

push

Un value può essere aggiunto alla fine di un array usando .push(value). Il metodo restituisce la nuova lunghezza dell'array.

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

pop

L'ultimo value può essere rimosso da un array usando .pop(). Il metodo restituisce il valore rimosso. La lunghezza dell'array diminuirà per effetto di questa modifica.

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

shift

Il primo value può essere rimosso da un array usando .shift(). Il metodo restituisce il valore rimosso. La lunghezza dell'array diminuirà per effetto di questa modifica.

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

unshift

Un value può essere aggiunto all'inizio di un array usando .unshift(value). Il metodo restituisce la nuova lunghezza dell'array.

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

splice

Un value in corrispondenza di uno index specifico può essere rimosso da un array usando .splice(index, 1). Il metodo restituisce l'elemento o gli elementi rimossi.

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

Questi metodi sono più potenti di quanto descritto:

  • Sia push che unshift permettono di aggiungere più valori in una volta sola, passando altri argomenti. Non è necessario per completare questo esercizio.
  • Splice può rimuovere più valori aumentando il secondo argomento. Non è necessario per completare questo esercizio.
  • Splice può anche aggiungere più valori passandoli come argomenti dopo il deleteCount. Si può usare per sostituire valori o inserirne nel mezzo di un array (ad esempio rimuovendo 0 elementi). Non è necessario per completare questo esercizio.

Istruzioni

Elyse, aspirante maga, deve esercitarsi con le basi. Ha un mazzo di carte che vuole manipolare.

Per rendere le cose un po' più semplici usa solo le carte da 1 a 10, così il suo mazzo di carte può essere rappresentato da un array di numeri. La posizione di una certa carta corrisponde all'indice nell'array. Questo significa che la posizione 0 si riferisce alla prima carta, la posizione 1 alla seconda e così via.

Note

Tutte le funzioni tranne due devono aggiornare l'array di carte e poi restituire l'array modificato: un modo di lavorare molto comune noto come pattern Builder, che permette di concatenare le funzioni una dietro l'altra in modo elegante.

Le due eccezioni sono getItem, che deve restituire la carta nella posizione indicata, e checkSizeOfStack, che deve restituire true se la dimensione indicata corrisponde.

1. Recuperare una carta dal mazzo

Per pescare una carta, restituisci la carta all'indice position del mazzo indicato.

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

2. Scambiare una carta nel mazzo

Con un po' di giochi di prestigio, scambia la carta all'indice position con la carta sostitutiva fornita. Restituisci il mazzo aggiornato.

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

3. Inserire una carta in cima al mazzo

Fai apparire una carta inserendo una nuova carta in cima al mazzo. Restituisci il mazzo aggiornato.

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

4. Rimuovere una carta dal mazzo

Fai sparire una carta rimuovendo dal mazzo la carta nella position indicata. Restituisci il mazzo aggiornato.

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

5. Rimuovere la carta in cima al mazzo

Fai sparire una carta rimuovendo la carta in cima al mazzo. Restituisci il mazzo aggiornato.

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

6. Inserire una carta in fondo al mazzo

Fai apparire una carta inserendo una nuova carta in fondo al mazzo. Restituisci il mazzo aggiornato.

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

7. Rimuovere una carta dal fondo del mazzo

Fai sparire una carta rimuovendo la carta in fondo al mazzo. Restituisci il mazzo aggiornato.

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

8. Controllare la dimensione del mazzo

Controlla se la dimensione del mazzo è uguale a stackSize oppure no.

const stackSize = 4;
checkSizeOfStack([3, 2, 6, 4, 8], stackSize);
// => false
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
JavaScript Exercism

Vuoi iniziare Gli incantesimi di Elyse?

Iscriviti a Exercism per imparare e padroneggiare JavaScript con 37 concetti159 esercizi e il mentoring di persone reali, tutto gratis.