javascript - 需要为过滤器再添加一列“姓氏”。如果在下面的代码中的数据源中可用。角度数据表
问题描述
private performFilter(filterBy: string) {
filterBy = filterBy.toLocaleLowerCase();
--- returning value
return this.dataSource.filter(
(data: any) =>
data.FirstName ? data.FirstName.toLocaleLowerCase().indexOf(filterBy) !== -1 : ""
);
}
解决方案
所以我知道你想要做的是根据下面的值过滤一些数组,如下例所示:
class Foo {
public dataSource: {
FirstName: string;
LastName: string;
}[] = [{
FirstName: 'Obiwan',
LastName: 'Kenobi',
}, {
FirstName: 'Bob',
LastName: 'Franklin',
}, {
FirstName: 'Anakin',
LastName: 'skywalker',
}];
public performFilter(filterBy: string) {
const toFilterBy = filterBy.toLocaleLowerCase();
return this.dataSource.filter((data) => {
// Check for FirstName
if (data.FirstName && data.FirstName.toLocaleLowerCase().indexOf(toFilterBy) !== -1) {
return true;
}
// Check for LastName
if (data.LastName && data.LastName.toLocaleLowerCase().indexOf(toFilterBy) !== -1) {
return true;
}
return false;
});
}
}
const foo = new Foo();
console.log('------- Before', foo.dataSource);
console.log('------- After', foo.performFilter('Obiwan'));
现在我们可以看到一个重复的模式,我们可以概括:
type DataSource = {
FirstName: string;
LastName: string;
};
class Foo {
public dataSource: DataSource[] = [{
FirstName: 'Obiwan',
LastName: 'Kenobi',
}, {
FirstName: 'Bob',
LastName: 'Franklin',
}, {
FirstName: 'Anakin',
LastName: 'skywalker',
}];
public performFilter(filterBy: string) {
const toFilterBy = filterBy.toLocaleLowerCase();
return this.dataSource.filter((data: DataSource) => ([
'FirstName',
'LastName',
] as (keyof DataSource)[]).some(x => data[x] && data[x].toLocaleLowerCase().indexOf(toFilterBy) !== -1));
}
}
const foo = new Foo();
console.log('------- Before', foo.dataSource);
console.log('------- After', foo.performFilter('Obiwan'));
推荐阅读
- c# - 为什么有些文本是粗体的?
- cassandra - Cassandra 无效查询:缺少一些集群键
- javascript - 链接上的 e.preventDefault() 仍会加载页面
- regex - 如何从 unzip -l 的输出中获取特定路径
- python - Python Numpy polyfit 结果与 SciPy interpolate 不同
- c++11 - 按位 AND 计算除以“n”的 2 的最大幂 - C++
- laravel - Laravel 5.6 - Eloquent 关系创建失败(类型错误)
- express - Mongoose,findByIdAndUpdate,更新除一个之外的所有?
- c - 将字符串解析为 C 中的数字
- java - 如何从 MP Android BarChart 中的 Y 轴中删除值