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