Angenommen, ich habe eine Sammlung:Filter mit 'oder' in lodash Kürzel
var collection = [{type: 'a'}, {type: 'b'}, {type: 'c'}, {type: 'd'}]
Wie kann ich es filtern, so dass nur Typen 'a' und 'b' bleiben wird? Ich würde erwarten, etwas zu tun:
_filter(collection, ['type', 'a', 'b'])
D.h. Verwenden Sie _.matchesProperty iteratee shorthand, um mehrere übereinstimmende Typen zu behandeln, aber das funktioniert nicht auf diese Weise. Kennen Sie einen einfachen Weg dies zu erreichen, ohne eine benutzerdefinierte Funktion zu definieren?
Was ist so wichtig, wenn Sie keine eigene Funktion erstellen? 'collection = _.filter (Sammlung, Funktion (e) {return e.type == 'a' || e.type == 'b'});' Fertig. Noch besser mit ES2015: 'collection = _.filter (Sammlung, e => e.type == 'a' || e.type == 'b');' –
Es ist kein Blocker, aber ich war meistens überrascht Dies wurde nicht unterstützt, und einige Nachforschungen durchgeführt, um nichts zu finden, wollte also bestätigen, dass dies in lodash eigentlich nicht möglich ist. Außerdem spiele ich mit mehr funktioneller Art, Sachen zu tun, also hoffte ich, dass jemand mit einer interessanten Verwendung von _property, _.partial oder etwas Ähnlichem kommen würde. Aber Sie haben vollkommen Recht, das kann leicht mit benutzerdefinierten Funktion und sogar in eleganter Weise in ES6 getan werden. – wap300
Sie können in Erwägung ziehen, [conforms()] (https://lodash.com/docs#conforms) zu verwenden, wobei die 'type'-Eigenschaft [includes] (https://lodash.com/docs#includes) verwendet, das [bindet ] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind) '['a', 'b']' als ersten Parameter. – ryeballar