So entfernen Sie Schlüssel + Wert aus dem Hash in Javascript

Lesezeit: 3 Minuten

Benutzer-Avatar
Andreas Bullock

Gegeben

var myHash = new Array();
myHash['key1'] = { Name: 'Object 1' };
myHash['key2'] = { Name: 'Object 2' };
myHash['key3'] = { Name: 'Object 3' };

Wie entferne ich key2und 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

  • 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 von var myHash = new Array().

    – cprcrack

    3. Oktober 2012 um 17:33 Uhr

Benutzer-Avatar
karim79

Du schaust nach delete:

delete myhash['key2']

Siehe die Kern-JavaScript-Leitfaden

  • Ich dachte, das wäre richtig, deshalb habe ich es überhaupt versucht. Es tut erscheinen zu arbeiten, mein Problem liegt eigentlich in Json.stringify, ich aktualisiere die Frage

    – Andreas Bullock

    6. September 2009 um 15:20 Uhr

  • Verwenden Sie stattdessen die Splice-Funktion. Delete hinterlässt ein Loch im Array.

    – David Andrés

    6. September 2009 um 15:28 Uhr

  • Hier ist übrigens die oben erwähnte Splice-Funktion.

    – Per Lundberg

    29. April 2013 um 20:14 Uhr

  • Dies ist nicht die beste Option, wenn die Änderungen an myhash soll nur im aktuellen Umfang erfolgen. delete kann Nebenwirkungen haben, wenn Variablen an anderer Stelle auf die verweisen myhash Objekt.

    – maximal glatter

    6. Juni 2016 um 23:17 Uhr


Warum benutzt du new Array(); für Haschisch? Sie müssen verwenden new Object() stattdessen.

Und ich denke, du wirst bekommen, was du willst.

  • Neu mag ich gar nicht. Ich bevorzuge var myHash = [];

    – Nosredna

    6. September 2009 um 15:27 Uhr

  • Oder in diesem Fall myHash={}; 🙂

    – Nosredna

    6. September 2009 um 15:39 Uhr

  • Ich stimme zu. Das einzige, was ein Array Ihnen gibt, ist eine Länge, die niemals funktioniert, wenn Sie den Indexer auf etwas anderes als ein Int ändern.

    – Dein Freund Ken

    29. September 2009 um 16:53 Uhr

Benutzer-Avatar
Nosredna

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.

1145080cookie-checkSo entfernen Sie Schlüssel + Wert aus dem Hash in Javascript

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy