freeCodeCamp/curriculum/challenges/italian/02-javascript-algorithms-an.../functional-programming/remove-elements-from-an-arr...

2.9 KiB

id title challengeType forumTopicId dashedName
9d7123c8c441eeafaeb5bdef Rimuovere gli elementi da un array usando slice invece di splice 1 301236 remove-elements-from-an-array-using-slice-instead-of-splice

--description--

Un'operazione che si fa comunemente lavorando con gli array è quella di rimuovere degli elemento mantenendo il resto dell'array. A questo scopo JavaScript offre il metodo splice, che richiede degli argomenti per la posizione (indice) di dove iniziare a rimuovere gli elementi, e per il numero di elementi da rimuovere. Se il secondo argomento non è fornito, il comportamento predefinito è quello di rimuovere gli elementi fino alla fine. Tuttavia, il metodo splice muta l'array originale su cui viene chiamato. Ecco un esempio:

const cities = ["Chicago", "Delhi", "Islamabad", "London", "Berlin"];
cities.splice(3, 1);

Qui splice restituisce la stringa London e la elimina dall'array delle città. cities avrà il valore ["Chicago", "Delhi", "Islamabad", "Berlin"].

Come abbiamo visto nell'ultima sfida, il metodo slice non muta l'array originale, ma ne restituisce uno nuovo che può essere salvato in una variabile. Ricorda che il metodo slice richiede due argomenti per gli indici di inizio e fine (non inclusiva) della "fetta" (slice), e restituisce quegli elementi in un nuovo array. Usando il metodo slice invece di splice si evita qualsiasi effetto collaterale di mutazione dell'array.

--instructions--

Riscrivi la funzione nonMutatingSplice usando slice invece di splice. Questo dovrebbe limitare l'array cities fornito a una lunghezza di 3, e restituire un nuovo array contenente solo i primi tre elementi.

Non mutare l'array originale fornito alla funzione.

--hints--

Il tuo codice dovrebbe utilizzare il metodo slice.

assert(code.match(/\.slice/g));

Il tuo codice non dovrebbe usare il metodo splice.

assert(!code.match(/\.?[\s\S]*?splice/g));

L'array inputCities non dovrebbe cambiare.

assert(
  JSON.stringify(inputCities) ===
    JSON.stringify(['Chicago', 'Delhi', 'Islamabad', 'London', 'Berlin'])
);

nonMutatingSplice(["Chicago", "Delhi", "Islamabad", "London", "Berlin"]) dovrebbe restituire ["Chicago", "Delhi", "Islamabad"].

assert(
  JSON.stringify(
    nonMutatingSplice(['Chicago', 'Delhi', 'Islamabad', 'London', 'Berlin'])
  ) === JSON.stringify(['Chicago', 'Delhi', 'Islamabad'])
);

--seed--

--seed-contents--

function nonMutatingSplice(cities) {
  // Only change code below this line
  return cities.splice(3);

  // Only change code above this line
}

const inputCities = ["Chicago", "Delhi", "Islamabad", "London", "Berlin"];
nonMutatingSplice(inputCities);

--solutions--

function nonMutatingSplice(cities) {
  return cities.slice(0,3);
}
const inputCities = ["Chicago", "Delhi", "Islamabad", "London", "Berlin"];