freeCodeCamp/curriculum/challenges/italian/02-javascript-algorithms-an.../basic-data-structures/remove-items-using-splice.md

2.6 KiB

id title challengeType forumTopicId dashedName
587d78b2367417b2b2512b10 Rimuovere elementi usando splice() 1 301166 remove-items-using-splice

--description--

Ok, quindi abbiamo imparato a rimuovere gli elementi dall'inizio e dalla fine degli array usando shift() e pop(), ma cosa succede se vogliamo rimuovere un elemento da qualche parte nel mezzo? O rimuovere più di un elemento alla volta? Beh, ecco dove entra in gioco splice(). splice() ci permette di fare proprio questo: rimuovere qualunque numero di elementi consecutivi da qualsiasi punto di un array.

splice() può richiedere fino a 3 parametri, ma per ora ci concentreremo solo sui primi 2. I primi due parametri di splice() sono interi che rappresentano indici, o posizioni, dell'array sul quale viene chiamato splice(). E ricorda, gli array sono indicizzati a zero, quindi per indicare il primo elemento di un array, useremo 0. Il primo parametro di splice()rappresenta l'indice dell'array da cui iniziare a rimuovere gli elementi, mentre il secondo parametro indica il numero di elementi da eliminare. Ad esempio:

let array = ['today', 'was', 'not', 'so', 'great'];

array.splice(2, 2);

Qui rimuoviamo 2 elementi a partire dal terzo (all'indice 2). array avrà il valore ['today', 'was', 'great'].

splice() non solo modifica l'array su cui viene chiamato, ma restituisce anche un nuovo array contenente il valore degli elementi rimossi:

let array = ['I', 'am', 'feeling', 'really', 'happy'];

let newArray = array.splice(3, 2);

newArray ha il valore ['really', 'happy'].

--instructions--

Abbiamo inizializzato un array arr. Usa splice() per rimuovere gli elementi da arr, in modo che contenga solo elementi la cui somma sia 10.

--hints--

Non devi cambiare la riga originale const arr = [2, 4, 5, 1, 7, 5, 2, 1];.

assert(
  __helpers.removeWhiteSpace(code).match(/constarr=\[2,4,5,1,7,5,2,1\];?/)
);

arr dovrebbe contenere solo elementi la cui somma è 10.

assert.strictEqual(
  arr.reduce((a, b) => a + b),
  10
);

Il tuo codice dovrebbe utilizzare il metodo splice() su arr.

assert(__helpers.removeWhiteSpace(code).match(/arr\.splice\(/));

Splice dovrebbe solo rimuovere elementi da arr e non aggiungere altri elementi a arr.

assert(
  !__helpers.removeWhiteSpace(code).match(/arr\.splice\(\d+,\d+,\d+.*\)/g)
);

--seed--

--seed-contents--

const arr = [2, 4, 5, 1, 7, 5, 2, 1];
// Only change code below this line

// Only change code above this line
console.log(arr);

--solutions--

const arr = [2, 4, 5, 1, 7, 5, 2, 1];
arr.splice(1, 4);