Entfernen eines Elements aus einem Array, das einen Wert in Javascript angibt

8

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?

    
Doug Molineux 10.08.2011, 17:57
quelle

5 Antworten

4

Sie möchten die Funktion splice () verwenden, um das Element zu entfernen, indexOf findet es im Array:

Um ein bestimmtes Element im Array zu finden: ( um zu wissen, welches entfernt werden soll)

%Vor%

Vollständiges Beispiel:

%Vor%

Arbeitsdemo

    
Rion Williams 10.08.2011, 18:01
quelle
3
%Vor%

indexOf ( Quelle ):
Gibt den ersten Index zurück, bei dem ein bestimmtes Element im Array gefunden werden kann, oder -1, wenn es nicht vorhanden ist.

    
Shaz 10.08.2011 18:01
quelle
2

Sie können jQuerys $.inArray und Ihre $.each -Schleife loswerden, und sie funktioniert cross-browser (im Gegensatz zu Array.indexOf):

%Vor%

(Ich weiß, dass Ihre Frage nicht mit "jQuery" markiert ist, aber Sie erwähnen, dass Sie bereits eine $.each -Schleife verwenden).

    
karim79 10.08.2011 18:05
quelle
1

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.

%Vor%

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.

    
T.J. Crowder 10.08.2011 18:04
quelle
0

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).

    
numbers1311407 10.08.2011 18:01
quelle

Tags und Links