Underscore: Das Filtern nach Objekten könnte ein Objekt zurückgeben

Erstellt am 1. Nov. 2011  ·  8Kommentare  ·  Quelle: jashkenas/underscore

Hallo,

Hier ist ein häufiger Anwendungsfall für Filter. Gegeben

a = {35: true, 45: true, 55: false}

man möchte filtern und nur Paare zurückbekommen, deren Wert wahr ist:

_.filter(a, function(val, key) {
  val === true;
});
// => {35: true, 45: true}

Derzeit funktionieren Funktionen wie filter push(value), sodass man ein Array erhält.

Gibt es eine einfache Möglichkeit, dies mit einer Problemumgehung zu erreichen, und wenn nicht, würden Sie in Betracht ziehen, den Typ der Rückgabe zu ändern, je nachdem, ob wir ein Objekt oder eine Liste bereitstellen?

change wontfix

Hilfreichster Kommentar

jk, habe gerade _.pick gesehen, was perfekt für meinen Anwendungsfall ist

Alle 8 Kommentare

+1

Ich brauchte nur das Gleiche und dieses Problem war der zweite Google-Git, den ich bei der Suche bekam. Das einzige Problem bei der Erstellung von _.filter für Objekte, die Objekte zurückgeben, ist die Abwärtskompatibilität ...

filter ist eine Funktion, die ihren Ursprung in ES5 hat ... und wir wollen sicherlich nicht die grundlegende Kompatibilität mit der Spezifikation brechen.

Um das Gesamtbild zu adressieren: Alle aufzählbaren Funktionen von Underscore.js können entweder Objekte oder Arrays annehmen und alle Arrays zurückgeben. Das Brechen der Konsistenz müsste hier für alle Funktionen auf einmal durchgeführt werden, nicht nur für eine von ihnen. Mit der aktuellen API können Sie Underscore-Funktionen erstellen, ohne sich Gedanken über die Eingabetypen machen zu müssen.

Ich habe Filter- und Ablehnungsfunktionen zu diesen Mixing-Gist-Tracking-Map-Funktionen für Objekte mit Key/Val-Persistenz hinzugefügt:

https://gist.github.com/3430971

+1

+1 Könntet ihr _.filterObj (usw.) einzeln hinzufügen, ähnlich wie _.mapObj ?

jk, habe gerade _.pick gesehen, was perfekt für meinen Anwendungsfall ist

@jtfairbank genau das, was ich brauche und wahrscheinlich das, was die meisten Leute brauchen, wenn sie hierher kommen, um ein Objekt zu „filtern“ und ein Objekt zu erstellen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

githublyp picture githublyp  ·  3Kommentare

ksullivan picture ksullivan  ·  9Kommentare

umarfarooq125 picture umarfarooq125  ·  8Kommentare

zackschuster picture zackschuster  ·  5Kommentare

acl0056 picture acl0056  ·  5Kommentare