lodash _.find所有比赛

时间:2016-02-19 10:02:21

标签: javascript lodash

我有简单的函数来返回符合我标准的对象。

代码如下:

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

我如何找到符合此标准但所有结果的所有结果(不仅仅是第一个)。

感谢anz的建议。

3 个答案:

答案 0 :(得分:80)

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

_.filter

  

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

答案 1 :(得分:6)

您可以使用_.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

答案 2 :(得分:3)

没有使用ES6的lodash,FYI:

基本示例(获取年龄小于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));
})