angular - 使用 FilterPredicate 创建自定义过滤器来过滤 DataSource
问题描述
我正在使用数据源来存储我的所有数据。到目前为止,我在执行搜索时使用的是标准过滤器。但是,现在我想使用“OR”运算符执行搜索。
例子 :
{name : john, age : 25, work : driver}
{name : peter, age : 28, work : writer}
{name : james, age : 39, work : athlete}
如果我输入“john james”,我希望过滤功能让我获得第 1 行和第 3 行。
我很确定我们必须使用 filterPredicate,但我真的不明白如何创建/使用它们,而且我找不到任何体面/工作的例子
除了给我一个原型之外,该文档无济于事:
filterPredicate: ((data: T, filter: string) => boolean);
你们有任何想法或代码示例如何实现吗?
这是我现在的基本搜索功能的样子:
applyFilter(filterValue: string) {
filterValue = filterValue.toLowerCase();
this.dataSource.filter = filterValue;
}
解决方案
const users = [
{name : 'john', age : 25, work : 'driver'},
{name : 'peter', age : 28, work : 'writer'},
{name : 'james', age : 39, work : 'athlete'}
]
const query = "john james";
const filtered = users.filter(e => query.includes(e.name));
这应该工作:)
使用数据源:
this.dataSource.filterPredicate = (data, filter) => filter.includes(data.name)
推荐阅读
- javascript - 滚动到水平滚动菜单中的特定 div
- javascript - 轮播项目不在导航栏下滚动
- python - 如何设置numpy生成的列表中点数的形式?
- plot - Tradingview Pine Script plotshape 函数不适用于条件系列 - 错误在哪里?
- javascript - 如何从 .tsx 文件生成 React 组件?
- arrays - 将矩阵转换为C中的数组
- python - 如何使用 python 向 yaml 文件添加新行/更新数据?
- dlib - 如何将 conda python 库添加为 ubuntu 系统根库
- python - 如何保存和恢复具有某些功能的数据是列表?
- databricks - 永久保留 Delta Lake 的 Delta log 事务数据