Ich habe diese Frage gelesen:
Löschen von Array-Elementen in JavaScript - delete vs splice
Und es scheint, dass sowohl splice als auch delete einen Index des Elements benötigen, um es zu entfernen. Wie kann ich also den Index leicht finden, wenn ich den Wert habe?
Zum Beispiel, wenn ich ein Array habe, das so aussieht:
%Vor%und ich möchte test2 entfernen. Der Prozess, den ich gerade nutze, was ich nicht hoffe, ist der richtige Weg.% Co_de% prüft den Wert jedes Elements im Array und führt einen Zähler durch den Prozess (wird als Indexreferenz verwendet) ) und wenn der Wert gleich "test2" ist, dann habe ich meinen Index (in Form des Zählers) und verwende dann Spleiß, um ihn zu entfernen.
Während das Array größer wird, würde ich mir vorstellen, dass dies ein langsamer Prozess wäre, aber welche Alternativen habe ich?
Sie können jQuerys $.inArray
und Ihre $.each
-Schleife loswerden, und sie funktioniert cross-browser (im Gegensatz zu Array.indexOf):
(Ich weiß, dass Ihre Frage nicht mit "jQuery" markiert ist, aber Sie erwähnen, dass Sie bereits eine $.each
-Schleife verwenden).
Sie finden ein Element nach Wert mithilfe von Array#indexOf
und verwenden dann den resultierenden Index. Beachten Sie, dass ältere Browser es möglicherweise nicht haben. Sie sollten also prüfen, ob es vorhanden ist und es nicht hinzufügen - hier ist ein Code von MDC, der die Überprüfung durchführt und die Funktion hinzufügt, falls sie nicht vorhanden ist.
Beachten Sie, dass, wenn Sie dem Array
-Typ so etwas hinzufügen, for..in
Schleifen, die davon ausgehen, dass sie nur Array-Indizes sehen (d. h. inkorrekt , aber gemeinsame for..in
loops) werden Probleme haben, weil sie die Zeichenfolge" indexOf "sehen Wenn sie nur Array-Indizes erwarten, lesen Sie diesen Blogpost für Details.
underscore.js ist eine wirklich tolle kleine Bibliothek mit vielen nützlichen Funktionen. In diesem Fall wäre #reject angemessen.
(Obwohl die interne Methode natürlich Ihrer manuellen Indexsuche und Slice / Splice ähnelt).
Tags und Links javascript arrays