Предполагая, у меня есть коллекция:фильтра с «или» в lodash сокращенного выражения
var collection = [{type: 'a'}, {type: 'b'}, {type: 'c'}, {type: 'd'}]
Как я могу фильтровать так только тип «а» и «б» останутся? Я бы ожидать, чтобы сделать что-то вроде:
_filter(collection, ['type', 'a', 'b'])
Т.е. используйте _.matchesProperty iteratee, чтобы обрабатывать несколько типов соответствия, но это не работает. Знаете ли вы какой-либо простой способ достичь этого, не определяя настраиваемую функцию?
Что так важно в том, что вы не создаете свою собственную функцию? 'collection = _.filter (collection, function (e) {return e.type == 'a' || e.type == 'b'});' Done. Еще лучше с ES2015: 'collection = _.filter (collection, e => e.type == 'a' || e.type == 'b');' –
Это не блокиратор, но я был в основном удивлен тем, что это не было поддержано, и некоторые исследования не нашли ничего, поэтому хотелось бы подтвердить, что это невозможно в lodash. Кроме того, я играю с более функциональным способом делать вещи, поэтому я надеялся, что кто-то придумает интересное использование _property, _partparty или что-то подобное. Но вы совершенно правы, это легко сделать с помощью пользовательской функции и даже в элегантном стиле в ES6. – wap300
Вы можете рассмотреть [соответствие()] (https://lodash.com/docs#conforms), где свойство 'type' использует [includes] (https://lodash.com/docs#includes), которое [связывает ] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind) '['a', 'b']' в качестве первого параметра. – ryeballar