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?
+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:
+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.
Hilfreichster Kommentar
jk, habe gerade
_.pick
gesehen, was perfekt für meinen Anwendungsfall ist