Javascript: Rimuovere un elemento da un array

Ed eccoci alla classica domanda che inevitabilmente tutti ci poniamo!
Come si fa a togliere un elemento da un array in javascript?
Beh, per toglierlo dall’inizio o dalla fine si possono usare i semplici .pop() (per togliere l’ultimo) e .shift() (per togliere il primo).
Ma come fare per togliere un elemento all’interno?

Purtroppo non esiste una funzione di sistema che lo faccia, quindi dovremmo crearcela noi đŸ™‚

Innanzi tutto vediamo come togliere un elemento da un array. Clicca qui per eseguire il codice sottostante.

var ar = ['a','b','c','d','e'];     // Il nostro array
alert('Il nostro array iniziale:' + new String(ar));
var el = ar.splice(3,1);  // Togliamo l'elemento alla posizione 3
alert('Il nostro elemento rimosso:  '+ el);
alert('Il nostro array finale: ' + new String(ar) );

Ora sappiamo come togliere un elemento e sostituirlo, quindi creiamo una funzione prototype all’oggetto Array che tolga l’elemento alla posizione pos e lo restiuisca:

Array.prototype.removePos = function(pos) {
   var el = this.splice(3,pos);
return el }; // Esempio di utilizzo:
var ar = ['a','b','c','d','e']; var el = ar.removePos(3); // Ora el conterrĂ  'e' e ar sarĂ  ['a','b','c','e']

Se invece vogliamo ricercare un elemento el e toglierlo la funzione sarĂ  la seguente:

 Array.prototype.removeEl = function(el) {
   this.splice(array.indexOf(el), 1);
};

// Esempio di utilizzo:
var ar = ['a','b','c','d','e'];
ar.removeEl('c'); // Ora ar sarĂ  ['a','b','d','e']

Tutto qui đŸ™‚

Unisciti alla discussione

5 commenti

  1. Allora…
    La funzione removePos(x) rimuove l’elemento alla posizione x e lo restituisce, mentre removeEl(x) ricerca nell’array il valore x e lo rimuove.
    Forse era meglio se facevo gli esempi con array contenenti stringhe invece che numeri…
    Ora aggiorno đŸ™‚

  2. Ciao, vorrei segnalarti un errore che mi appare quando uso l’ultima funzione (quella cerca ed elimina)

    array is not defined
    [Interrompi per questo errore] this.splice(array.indexOf(el), 1);

  3. una piccola correzione

    Array.prototype.removeEl = function(el) {
    this.splice(this.indexOf(el), 1);
    };

Lascia un commento

Il tuo indirizzo email non sarĂ  pubblicato. I campi obbligatori sono contrassegnati *