Come rimuovo la chiave "bar" da un array di foo in modo che "bar" non venga visualizzato
for(key in foo){alert(key);}
Come rimuovo la chiave "bar" da un array di foo in modo che "bar" non venga visualizzato
for(key in foo){alert(key);}
Risposte:
Non usare elimina poiché non rimuoverà un elemento da un array ma lo imposterà solo come indefinito, che non si rifletterà correttamente nella lunghezza dell'array.
Se conosci la chiave dovresti usare splice ie
myArray.splice(key, 1);
Per qualcuno nella posizione di Steven puoi provare qualcosa del genere:
for (var key in myArray) {
if (key == 'bar') {
myArray.splice(key, 1);
}
}
o
for (var key in myArray) {
if (myArray[key] == 'bar') {
myArray.splice(key, 1);
}
}
for (var key in myArray)
invece di for (key in myArray)
- altrimenti key
è una variabile globale e se chiami una funzione all'interno di quel ciclo che ha lo stesso problema, otterrai risultati imprevisti.
delete foo[key];
: D
eval
. L'eliminazione di una chiave / indice di un oggetto / matrice può essere ottenuta con metodi molto più semplici che non utilizzano eval
.
Una nota importante: gli array JavaScript non sono array associativi come quelli a cui potresti essere abituato da PHP. Se la "chiave dell'array" è una stringa, non stai più operando sul contenuto di un array. Il tuo array è un oggetto e stai usando la notazione parentesi per accedere al membro chiamato <nome chiave>. Così:
var myArray = []; myArray ["bar"] = true; myArray ["foo"] = true; alert (myArray.length); // restituisce 0.
poiché non hai aggiunto elementi all'array, hai modificato solo la barra e i membri foo di myArray.
Se conosci il nome della chiave, fai semplicemente così:
delete array['key_name']
Ecco come lo farei
myArray.splice( myArray.indexOf('bar') , 1)
http://www.internetdoc.info/javascript-function/remove-key-from-array.htm
removeKey(arrayName,key);
function removeKey(arrayName,key)
{
var x;
var tmpArray = new Array();
for(x in arrayName)
{
if(x!=key) { tmpArray[x] = arrayName[x]; }
}
return tmpArray;
}