如何在循环中.js延迟链接多个过滤器(从数组)
How to chain multiple filters in lazy.js in a loop (from array)
我有一个数组,其中包含需要应用于Lazy.js中的项目数组的过滤器函数。我尝试使用 for 循环,但只应用了最后一个过滤器。
function (searchText) {
var result = Lazy(input);
for (var query of this.querylist) {
result = result.filter((item) => {
return query.filterFunc(item, searchText, query.compareFunc);
});
}
return result.toArray();
}
有没有办法在不对链接进行硬编码的情况下应用过滤器列表?
这是一个显示问题的小提琴
您可以使用reduce循环访问过滤器,并通过将每个过滤器应用于前一个过滤器来创建结果过滤器。
var result = Lazy(contentArray);
var allFilters = filters.reduce(function(acc, current) {
return acc.filter((item) => current.filterFunc(item)); // return the last one with the current filter applied
}, result); // start with the original one
console.log(allFilters.toArray())
你可以在这里找到更新的小提琴。
减少只是一种更好、更通用的方式:
var allFilters = result
.filter(filters[0])
.filter(filters[1])
.filter(filters[2]);
Lazy.js 不会调用过滤器,直到您调用 toArray 或 forEach。我在这个例子中放了一些日志。
相关文章:
- angularjs ng基于点击时的数组值重复过滤器
- javascript和具有唯一密钥的es6过滤器数组
- 数组过滤器导致无限$digest循环
- (角度.js)如何通过过滤器计算数组中有多少项目
- AngularJS过滤器不适用于我的数据:关联数组
- 键上的javascript数组对象过滤器
- 如何遍历对象数组并将值放入过滤器中
- 如何使用angular js过滤器格式化数组中的值
- Javascript数组过滤器:获取正确的上下文
- 如何在angularjs中对指令内部的JSON数组使用过滤器
- 对象中的角度过滤器空数组
- 数组中的Angular js过滤器数组
- 数组中的javascript过滤器数组
- 通过过滤器数组设置对象数组的属性
- 使用类似查询的对象过滤器数组下划线
- 在 JavaScript 中使用第二个数组的过滤器数组
- rxjs的filter方法没有返回过滤器数组
- 过滤器数组递归查找父级
- 基于this.props.params.id的React过滤器数组
- JavaScript 过滤器数组多个条件