我对带有名称和电子邮件地址的行进行了过滤。我希望过滤器显示匹配结果,而不考虑大小写。 例如: 搜索管理员 应该显示admin@email.com和一个管理员用户名。
@Pipe({
name: 'dataFilter'
})
export class DataFilterPipe implements PipeTransform {
transform(array: any[], query: string): any {
if (query) {
return _.filter(array, row => row.email.toLowerCase().indexOf(query) > -1 || row.name.toLowerCase().indexOf(query) > -1)
}
return array;
}
}
我添加了toLowerCase()-解决了过滤器以显示小写字母搜索的问题,但是如果用户现在搜索Admin,它将找不到电子邮件,只是用户名Admin。
答案 0 :(得分:1)
尝试一下:
return _.filter(array, row => row.email.toLowerCase().indexOf(query.toLowerCase()) > -1 || row.name.toLowerCase().indexOf(query.toLowerCase()) > -1)
答案 1 :(得分:1)
无论以下哪种情况,您都可以过滤数据,也可以查看演示以进行演示- https://stackblitz.com/edit/angular-wxocfg?file=src/app/filter.pipe.ts
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'filter'
})
export class FilterPipe implements PipeTransform {
transform(items: any[], searchText: string): any[] {
if (!items) return [];
if (!searchText) return items;
searchText = searchText.toLowerCase();
return items.filter(it => {
return it.email.toLowerCase().includes(searchText) || it.name.toLowerCase().includes(searchText);
});
}
}
答案 2 :(得分:0)
您正在传递输入时的查询参数,因此,如果存在查询参数,但使用不同的情况,indexOf方法将返回-1,因此您应该执行的操作是将传递的查询参数转换为transfrom函数也要小写,这样就会有一个匹配项。
由于无法确定下划线的含义,因此我使用JavaScript的内置数组过滤器解决了您的问题。干杯!
@Pipe({
name: 'dataFilter'
})
export class DataFilterPipe implements PipeTransform {
transform(array: any[], query: string): any {
// convert the query parameter to lowercase too
query = query.toLowerCase();
if(query && array.length){
return array.filter(row => {
return row.email.toLowerCase().indexOf(query) > -1 ||
row.name.toLowerCase().indexOf(query) > -1;
})
}
}
}
答案 3 :(得分:0)
使用格式要求大写字母和小写字母,您应该同时使用toLowerCase
或toUpperCase
return _.filter(array, row => row.email.toLowerCase().indexOf(query.toLowerCase()) > -1 || row.name.toLowerCase().indexOf(query.toLowerCase()) > -1)
OR
return _.filter(array, row => row.email.toUpperCase().indexOf(query.toUpperCase()) > -1 || row.name.toUpperCase().indexOf(query.toUpperCase()) > -1)
此演示使用toUpperCase
https://stackblitz.com/edit/angular-filter-ignore-case