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 đŸ™‚
Non ho capito bene cos’hanno di differente le due funzioni e cosa facciano…
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 đŸ™‚
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);
una piccola correzione
Array.prototype.removeEl = function(el) {
this.splice(this.indexOf(el), 1);
};
Ok ci sono riuscito finalmente xD