lodash _.find所有匹配项

66

我有一个简单的函数,可以返回符合我的条件的对象。

代码如下:

    var res = _.find($state.get(), function(i) {
        var match = i.name.match(re);
        return match &&
            (!i.restrict || i.restrict($rootScope.user));
    });

我该如何找到符合这个标准的所有结果(而不仅是第一个结果)呢?

感谢任何建议。


4
你在寻找 _.filter 吗? - georg
3个回答

122

只需使用 _.filter - 它会返回所有匹配的项。

_.filter

迭代集合的元素,返回一个数组,其中包含谓词函数对其返回 truthy 的所有元素。谓词函数使用三个参数调用:(value, index|key, collection)。


8

不使用ES6的lodash,请参考以下内容:

基础示例(获取年龄小于30岁的人):

const peopleYoungerThan30 = personArray.filter(person => person.age < 30)

使用您的代码的示例:

$state.get().filter(i => {
    var match = i.name.match(re);
    return match &&
            (!i.restrict || i.restrict($rootScope.user));
})

8
您可以使用 _.filter,将所有要求传递进去,如下所示:
var res = _.filter($state.get(), function(i) {
        var match = i.name.match(re);
        return match &&
            (!i.restrict || i.restrict($rootScope.user));
    });

Link to documentation


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接