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

Gli incantesimi analitici di Elyse

Esercizio di apprendimento

Introduzione

Funzioni freccia

Oltre alle dichiarazioni di funzione e alle espressioni di funzione, JavaScript ha anche un'altra sintassi molto concisa per definire una funzione. Queste funzioni si chiamano funzioni freccia.

Ecco un confronto tra una dichiarazione di funzione e una funzione freccia.

function addUpTwoNumbers(num1, num2) {
  return num1 + num2;
}
// function keyword removed and => added
const addUpTwoNumbers = (num1, num2) => {
  return num1 + num2;
};

Se il corpo della funzione contiene solo un'istruzione return, come nell'esempio sopra, si possono omettere le {} e la parola chiave return. Se c'è un solo parametro, si possono omettere anche le parentesi tonde (()).

const addUpTwoNumbers = (num1, num2) => num1 + num2;
const square = num => num * num;

Le funzioni freccia si usano spesso per definire brevi funzioni di callback direttamente nella chiamata della funzione.

applyToSquare(number => number * number);

Analisi degli array

Gli array hanno metodi integrati per analizzare il contenuto dell'array. La maggior parte di questi metodi accetta come argomento una funzione che restituisce true o false. Una funzione di questo tipo si chiama predicate.

Questi metodi integrati sono pensati per essere usati al posto di un ciclo for o del metodo integrato forEach:

Esempio di analisi con un ciclo for:

const numbers = [1, 'two', 3, 'four'];
for (var i = 0; i < numbers.length; i++) {
  if (numbers[i] === 'two') {
    return i;
  }
}
// => 1

Esempio di analisi con un metodo integrato:

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

Qui sotto sono mostrati altri metodi integrati utili che puoi usare per analizzare un array. Vedi MDN per un elenco completo dei metodi degli array.

includes

Il metodo includes(value) determina se un array contiene un certo valore. Restituisce true quando il valore è presente, false in caso contrario.

const numbers = [1, 'two', 3, 'four'];
numbers.includes(1);
// => true
numbers.includes('one');
// => false

every

Il metodo every(predicate) accetta una funzione che è un predicato. Verifica se tutti gli elementi dell'array restituiscono true quando vengono passati al predicato. In altre parole: il metodo verifica che tutti i suoi elementi superino il test passato alla chiamata della funzione. Restituisce true quando ogni elemento supera il test del predicato, false in caso contrario.

const numbers = [1, 3, 5, 7, 9];
numbers.every((num) => num % 2 !== 0);
// => true

some

Il metodo some(predicate) è uguale al metodo every, ma restituisce true se almeno un elemento dell'array supera il test del predicato.

const numbers = [1, 3, 5, 7, 9];
numbers.some((num) => num % 2 !== 0);
// => true

find

Il metodo find(predicate) restituisce il valore del primo elemento dell'array che supera il test di predicate. Mentre some() restituisce true quando il test viene superato, find() restituisce il valore effettivo presente nell'array. Il metodo restituisce undefined quando nessuno degli elementi dell'array supera il test del predicato.

const numbers = [1, 3, 5, 7, 9];
numbers.find((num) => num < 5);
// => 1

findIndex

Il metodo findIndex(predicate) è uguale al metodo find(), ma restituisce l'indice (il primo) dell'elemento che supera il test del predicato invece del value. Il metodo restituisce -1 quando nessuno degli elementi dell'array supera il test del predicato.

const numbers = [1, 3, 5, 7, 9];
numbers.findIndex((num) => num > 7);
// => 4
numbers.findIndex((num) => num > 9);
// => -1

Istruzioni

Elyse, futura maga, continua il suo allenamento. Le verranno date diverse pile di carte con cui eseguire i suoi trucchi. Per semplificare un po' le cose, usa solo le carte da 1 a 10.

In questo esercizio, usa i metodi integrati per analizzare il contenuto di un array.

1. Trova la posizione di una carta

Elyse vuole conoscere la posizione (l'indice) di una carta nella pila.

const card = 2;
getCardPosition([9, 7, 3, 2], card);
// => 3

2. Determina se una carta è presente

Elyse vuole determinare se una carta è presente nella pila, in altre parole se la pila contiene una determinata number.

const card = 3;
doesStackIncludeCard([2, 3, 4, 5], card);
// => true

3. Determina se ogni carta è pari

Elyse vuole sapere se ogni carta è pari, in altre parole se ogni numero nella pila è un number pari.

isEachCardEven([2, 4, 6, 7]);
// => false

4. Verifica se la pila contiene una carta con un valore dispari

Elyse vuole sapere se c'è un numero dispari nella pila.

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

5. Ottieni la prima carta dispari dalla pila

Elyse vuole sapere il valore della prima carta dispari.

getFirstOddCard([4, 2, 8, 7, 9]);
// => 7

6. Determina la posizione della prima carta pari

Elyse vuole sapere la posizione della prima carta pari.

getFirstEvenCardPosition([5, 2, 3, 1]);
// => 1
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
JavaScript Exercism

Vuoi iniziare Gli incantesimi analitici di Elyse?

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