Entfernen von Elementen mit Array.map in JavaScript

Ich würde gerne filter ein array von Elementen mithilfe der map() Funktion. Hier ist ein code-snippet:

var filteredItems = items.map(function(item)
{
    if( ...some condition... )
    {
        return item;
    }
});

Das problem ist, dass die gefilterten Elemente verwendet immer noch Platz im array und ich möchte, um vollständig wischen Sie Sie heraus.

Irgendeine Idee?

EDIT: Danke, ich vergaß filter(), was ich wollte, ist eigentlich ein filter() dann ein map().

EDIT2: Danke für den Hinweis, dass map() und filter() sind nicht in allen Browsern implementiert, obwohl meine spezifischen code war nicht beabsichtigt, in einem browser laufen.

Kommentar zu dem Problem
Bitte verwenden Sie die reduzieren anstatt sich zu verdoppeln, Iterationen mit map -> filter. Ich habe Angst, dass die Leute kommen, um diese Frage falsch zu Lesen dies, ohne auf Antworten und schließlich lernen, dass es einen besseren Weg. Kommentarautor: Kyle Baker
Können Sie näher erläutern, warum 2 Iterationen sind die schlimmsten, die 1 ? Ich meine, 2*O(n) äquivalent ist zu O(2*n) zu mir... Kommentarautor: Vincent Robert
Ja, 20 * 2 & 10 * 4 sind die gleichen... Aber, während Sie die gleiche Anzahl von Operationen innerhalb Ihres filters/map-Funktionen, können Sie die doppelte Anzahl von Funktionsaufrufen zu tun. filter(f) -> Karte(g) vs. verringern(h). Jeder Funktionsaufruf verursacht einige Kosten. (Ja, in der Regel vernachlässigbar, aber map/filter/reduce sind die Arten von Funktionen, die auf sehr große Listen, in denen diese Kosten können spürbar werden). Ich werde versuchen, einige jsperf tests später zu illustrieren (und zu überprüfen), und aktualisieren Sie meine Antwort und dieser Kommentar zu dieser Zeit. (Alle, abgesehen, ist dies ein Idealer Anwendungsfall für reduzieren.) Kommentarautor: Kyle Baker

InformationsquelleAutor der Frage Vincent Robert | 2008-08-12

Schreibe einen Kommentar