我有一个简单的函数,可以返回符合我的条件的对象。
代码如下:
var res = _.find($state.get(), function(i) {
var match = i.name.match(re);
return match &&
(!i.restrict || i.restrict($rootScope.user));
});
我该如何找到符合这个标准的所有结果(而不仅是第一个结果)呢?
感谢任何建议。
我有一个简单的函数,可以返回符合我的条件的对象。
代码如下:
var res = _.find($state.get(), function(i) {
var match = i.name.match(re);
return match &&
(!i.restrict || i.restrict($rootScope.user));
});
我该如何找到符合这个标准的所有结果(而不仅是第一个结果)呢?
感谢任何建议。
只需使用 _.filter
- 它会返回所有匹配的项。
迭代集合的元素,返回一个数组,其中包含谓词函数对其返回 truthy 的所有元素。谓词函数使用三个参数调用:(value, index|key, collection)。
不使用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));
})
var res = _.filter($state.get(), function(i) {
var match = i.name.match(re);
return match &&
(!i.restrict || i.restrict($rootScope.user));
});
_.filter
吗? - georg