En supposant que j'ai une collection:avec filtre 'ou' dans l'expression abrégée lodash
var collection = [{type: 'a'}, {type: 'b'}, {type: 'c'}, {type: 'd'}]
Comment puis-je filtrer si seulement a 'types et 'b' restera? Je me attends à faire quelque chose comme:
_filter(collection, ['type', 'a', 'b'])
à savoir utilisez _.matchesProperty iteratee shorthand pour gérer plusieurs types correspondants, mais cela ne fonctionne pas de cette façon. Connaissez-vous un moyen simple d'y parvenir sans définir de fonction personnalisée?
Qu'y a-t-il d'important de ne pas créer votre propre fonction? 'collection = _.filter (collection, fonction (e) {return e.type == 'a' || e.type == 'b'});' Fait. Encore mieux avec ES2015: 'collection = _.filter (collection, e => e.type == 'a' || e.type == 'b');' –
Ce n'est pas un bloqueur, mais j'étais plutôt surpris que Ce n'était pas pris en charge, et fait des recherches pour ne rien trouver, donc je voulais confirmer que ce n'est pas possible dans lodash. En outre, je joue avec une façon plus fonctionnelle de faire les choses, alors j'espérais que quelqu'un trouverait une utilisation intéressante de _property, _.partial ou quelque chose de semblable. Mais vous avez parfaitement raison, cela peut être facilement fait avec une fonction personnalisée, et même de manière élégante en ES6. – wap300
Vous pouvez utiliser [conformes()] (https://lodash.com/docs#conforms), où la propriété 'type' utilise [includes] (https://lodash.com/docs#includes) qui [lie ] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind) '['a', 'b']' comme premier paramètre. – ryeballar