Wie entferne ich den Schlüssel 'bar' aus einem Array foo, damit 'bar' nicht in angezeigt wird
for(key in foo){alert(key);}
Wie entferne ich den Schlüssel 'bar' aus einem Array foo, damit 'bar' nicht in angezeigt wird
for(key in foo){alert(key);}
Antworten:
Verwenden Sie nicht delete, da dadurch kein Element aus einem Array entfernt wird. Es wird nur als undefiniert festgelegt, was sich dann nicht korrekt in der Länge des Arrays widerspiegelt.
Wenn Sie den Schlüssel kennen, sollten Sie Spleiß verwenden, dh
myArray.splice(key, 1);
Für jemanden in Stevens Position können Sie so etwas ausprobieren:
for (var key in myArray) {
if (key == 'bar') {
myArray.splice(key, 1);
}
}
oder
for (var key in myArray) {
if (myArray[key] == 'bar') {
myArray.splice(key, 1);
}
}
for (var key in myArray)anstelle von for (key in myArray)- andernfalls keyhandelt es sich um eine globale Variable. Wenn Sie eine Funktion in dieser Schleife aufrufen, die dasselbe Problem aufweist, erhalten Sie unerwartete Ergebnisse.
delete foo[key];
: D.
eval. Das Löschen eines Schlüssels / Index eines Objekts / Arrays kann durch viel einfachere Methoden erreicht werden, die nicht verwendet werden eval.
Ein wichtiger Hinweis: JavaScript-Arrays sind keine assoziativen Arrays, wie Sie sie von PHP gewohnt sind. Wenn Ihr "Array-Schlüssel" eine Zeichenfolge ist, bearbeiten Sie den Inhalt eines Arrays nicht mehr. Ihr Array ist ein Objekt, und Sie verwenden die Klammernotation, um auf das Mitglied mit dem Namen <Schlüsselname> zuzugreifen. So:
var myArray = []; myArray ["bar"] = true; myArray ["foo"] = true; alert (myArray.length); // gibt 0 zurück.
Da Sie dem Array keine Elemente hinzugefügt haben, haben Sie nur die Balken- und Foo-Mitglieder von myArray geändert.
Wenn Sie den Schlüsselnamen kennen, gehen Sie einfach so vor:
delete array['key_name']
So würde ich es machen
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;
}