Schnellste Möglichkeit zum löschen eines Eintrags aus der Mitte des Array()
Was ist die Schnellste Möglichkeit zum löschen eines bestimmten Eintrags aus der Mitte der Array () -
Array groß ist eine mit Streichern.
Ich möchte nicht, dass nur Array[5] = null, sondern Arrays der Größe um eins reduziert und array[5] sollte Inhalt von array[6] usw.
InformationsquelleAutor der Frage Tom | 2009-03-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe keine benchmarks um das zu unterstützen, aber man würde davon ausgehen, dass die native Array.splice Methode wäre die Schnellste...
So, entfernen Sie den Eintrag mit dem index 5:
InformationsquelleAutor der Antwort kkyy
Wenn Sie kümmern sich nicht um die Reihenfolge der Elemente im array (sondern nur wollen, dass es um 1 kürzer), die Sie kopieren können, die das Letzte element das array mit dem index gelöscht werden, dann pop das Letzte element aus.
Ich würde vermuten, das ist schneller, CPU-Zeit-Weise, wenn Sie Weg erhalten können mit der Neuordnung der array.
EDIT: Man sollte die benchmark für Ihren konkreten Fall; ich habe vor kurzem Tat dies, und es war schneller, nur splice. (Vermutlich, weil Chrom ist eigentlich nicht die Speicherung der array wie eine einzelne kontinuierliche buffer.)
InformationsquelleAutor der Antwort Jesse Rusak
Array.splice() ", fügt Elemente hinzu oder entfernt Elemente aus einem array":
InformationsquelleAutor der Antwort hasseg
Getestet habe ich Array.der Prototyp.splice() und festgestellt, dass es sehr langsam bei großen arrays.
Einen viel schnelleren Weg, zu entfernen Elemente kopieren Sie diejenigen, die Sie behalten wollen, um ein neues array, während das überspringen die, die Sie entfernen möchten. Wenn Sie fertig sind, kopieren Sie einfach überschreiben das alte array mit dem neuen.
In meinem test habe ich entfernt, jedes andere element aus einem array mit 100.000 Elementen. Der test verglichen Array.der Prototyp.splice() zu anderen Methoden. Hier sind die Ergebnisse:
Hier ist der code für die Letzte Methode:
Den test in der Aktion findet Ihr auf jsFiddle: http://jsfiddle.net/sansegot/eXvgb/3/
Die Ergebnisse sind viel anders, wenn Sie nur zu entfernen brauchen, ist ein paar Elemente, die - in solchen Fällen-Array.der Prototyp.splice() ist schneller (obwohl der Unterschied ist nicht so groß)! Nur, wenn Sie aufrufen müssen, die splice () - viele Male, ist es Wert, es zu implementieren benutzerdefinierter Algorithmus.
Der zweite test, in dem eine begrenzte Anzahl von Elementen, die entfernt werden sollen, können hier gefunden werden:
http://jsfiddle.net/sansegot/ZeEFJ/1/
InformationsquelleAutor der Antwort knee-cola
Je nach Fall, können Sie erwägen, ein Wörterbuch anstelle von einem Array, wenn Sie möchten, zu priorisieren, die performance.
InformationsquelleAutor der Antwort Theo.T