假设我有一个集合:
var collection = [{type: 'a'}, {type: 'b'}, {type: 'c'}, {type: 'd'}]
我如何过滤它,以便只输入' a'和' b'会保持?我期望做类似的事情:
_filter(collection, ['type', 'a', 'b'])
即。使用_.matchesProperty iteratee简写来处理多种匹配类型,但它不起作用。在没有定义自定义函数的情况下,您知道实现此目的的任何简单方法吗?
答案 0 :(得分:4)
您可以将_.filter
与函数结合使用,使其更具功能性,但简单.filter
也足够了:
<强> ES5:强>
collection.filter(function (i) {
return i.type === 'a' || i.type === 'b';
});
<强> ES6 强>
collection.filter(i => i.type === 'a' || i.type === 'b')
答案 1 :(得分:1)
很好,把ryeballar的建议写成答案:
假设我有:
var collection = [{type: 'a'}, {type: 'b'}, {type: 'c'}, {type: 'd'}]
以下将仅过滤掉'a'和'b'类型:
_.filter(collection, _.conforms({'type': _.partial(_.includes, ['a', 'b'])}))
不是最漂亮的代码,但我认为胜过ES5函数并显示_.conforms是如何工作的。正是我在寻找的东西!
答案 2 :(得分:1)
collection.filter(i => ['a', 'b'].includes(i.type));