Gegeben
var myHash = new Array();
myHash['key1'] = { Name: 'Object 1' };
myHash['key2'] = { Name: 'Object 2' };
myHash['key3'] = { Name: 'Object 3' };
Wie entferne ich key2
und object 2
aus dem Hash, so dass es in einem Zustand endet, als ob ich es getan hätte:
var myHash = new Array();
myHash['key1'] = { Name: 'Object 1' };
myHash['key3'] = { Name: 'Object 3' };
Löschen macht nicht was ich will;
delete myHash['key2']
gibt mir einfach folgendes:
var myHash = new Array();
myHash['key1'] = { Name: 'Object 1' };
myhash['key2'] = null;
myHash['key3'] = { Name: 'Object 3' };
Die einzigen Dokumente, die ich finden splice
und slice
mit ganzzahligen Indexern umgehen kann, die ich nicht habe.
Edit: Ich weiß auch nicht, dass 'key2' unbedingt in Position ist [1]
AKTUALISIEREN
OK, leicht roter Hering, Löschen scheint an der Oberfläche das zu tun, was ich will. Ich verwende jedoch json2.js, um mein Objekt mit json zu verbinden, damit es zurück zum Server verschoben werden kann.
Nach dem Löschen wird myHash wie folgt serialisiert:
[ { Name: 'Object 1' }, null, { Name: 'Object 3' } ]
Ist das ein Fehler in json2.js? oder mache ich etwas falsch mit löschen?
Vielen Dank
javascript
arrays
Andrew Bullock
quelle
quelle
var myHash = new Object()
anstelle von verwendenvar myHash = new Array()
.Antworten:
Sie suchen
delete
:delete myhash['key2']
Weitere Informationen finden Sie im Core Javascript Guide
quelle
myhash
nur im aktuellen Bereich erfolgen sollen.delete
kann Nebenwirkungen haben, wenn sich Variablen an anderer Stelle auf dasmyhash
Objekt beziehen .Warum verwenden Sie
new Array();
für Hash? Sie müssennew Object()
stattdessen verwenden.Und ich denke, Sie werden bekommen, was Sie wollen.
quelle
Sie sagen, Sie wissen nicht unbedingt, dass 'key2' in Position ist [1]. Nun, das ist es nicht. Position 1 würde von myHash [1] belegt.
Sie missbrauchen JavaScript-Arrays, die (wie Funktionen) Schlüssel- / Wert-Hashes zulassen. Obwohl JavaScript dies zulässt, bietet es Ihnen keine Möglichkeit, damit umzugehen, wie es eine Sprache für assoziative Arrays tun würde. Die Array-Methoden von JavaScript funktionieren nur mit den nummerierten Eigenschaften.
Das erste, was Sie tun sollten, ist zu Objekten anstatt zu Arrays zu wechseln. Sie haben keinen guten Grund, hier ein Array anstelle eines Objekts zu verwenden. Tun Sie es also nicht. Wenn Sie ein Array verwenden möchten, nummerieren Sie einfach die Elemente und geben Sie die Idee von Hashes auf. Die Absicht eines Arrays besteht darin, Informationen zu speichern, die numerisch indiziert werden können.
Sie können natürlich einen Hash (Objekt) in ein Array einfügen, wenn Sie möchten.
myhash[1]={"key1","brightOrangeMonkey"};
quelle
Eine andere Option kann diese Methode zum Entfernen von John Resig sein . kann besser passen, was Sie brauchen. wenn Sie den Index im Array kennen.
quelle