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 tut nicht, was ich will;
delete myHash['key2']
gibt mir einfach das:
var myHash = new Array();
myHash['key1'] = { Name: 'Object 1' };
myhash['key2'] = null;
myHash['key3'] = { Name: 'Object 3' };
die einzigen Dokumente, die ich finden kann splice
und slice
Umgang mit Integer-Indexern, die ich nicht habe.
Bearbeiten: Ich weiß auch nicht, dass ‘key2’ unbedingt in Position sein muss [1]
AKTUALISIEREN
OK, kleiner Ablenkungsmanöver, Löschen scheint auf der Oberfläche das zu tun, was ich will, aber ich verwende json2.js, um mein Objekt in json zu stringifizieren, um es zum Server zurückzuschieben.
nachdem ich gelöscht habe, wird myHash serialisiert als:
[ { Name: 'Object 1' }, null, { Name: 'Object 3' } ]
Ist das ein Fehler in json2.js? oder mache ich etwas falsch mit löschen?
Vielen Dank
Du schaust nach delete
:
delete myhash['key2']
Siehe die Kern-JavaScript-Leitfaden
Warum benutzt du new Array();
für Haschisch? Sie müssen verwenden new Object()
stattdessen.
Und ich denke, du wirst bekommen, was du willst.
Sie sagen, Sie wissen nicht unbedingt, dass ‘key2’ in Position ist [1]. Nun, das ist es nicht. Position 1 würde von myHash besetzt werden[1].
Sie missbrauchen JavaScript-Arrays, die (wie Funktionen) Schlüssel/Wert-Hashes zulassen. Auch wenn JavaScript dies zulässt, bietet es Ihnen keine Möglichkeit, damit umzugehen, wie es eine für assoziative Arrays entwickelte Sprache tun würde. Die Array-Methoden von JavaScript funktionieren nur mit den nummerierten Eigenschaften.
Als erstes sollten Sie zu Objekten statt zu Arrays wechseln. Sie haben keinen guten Grund, hier ein Array anstelle eines Objekts zu verwenden, also tun Sie es 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, in die numerisch indiziert werden kann.
Sie können natürlich einen Hash (Objekt) in ein Array einfügen, wenn Sie möchten.
myhash[1]={"key1","brightOrangeMonkey"};
Eine andere Option könnte diese sein John Resig-Entfernungsmethode. kann besser passen, was Sie brauchen. wenn Sie den Index im Array kennen.
Was Sie tun, ist das Hinzufügen von Eigenschaften zu einem Objekt, was sich vom Hinzufügen von Elementen zu einem Array/Hash unterscheidet. Sie suchen nach einer Möglichkeit, eine Eigenschaft mehr oder weniger zu entfernen. Versuchen Sie, myHash.key1 zu löschen, wie in anderen Kommentaren erwähnt.
– David Andrés
6. September 2009 um 15:35 Uhr
Wenn es sich um eine Hashtabelle handelt, sollten Sie verwenden
var myHash = new Object()
Anstatt vonvar myHash = new Array()
.– cprcrack
3. Oktober 2012 um 17:33 Uhr