我有简单的函数来返回符合我标准的对象。
代码如下:
var res = _.find($state.get(), function(i) {
var match = i.name.match(re);
return match &&
(!i.restrict || i.restrict($rootScope.user));
});
我如何找到符合此标准但所有结果的所有结果(不仅仅是第一个)。
感谢anz的建议。
答案 0 :(得分:80)
只需使用_.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));
});
答案 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));
})