searchTerm: any;
search() {
this.records = this.records.filter((res: any)=>{
return res.name.toLocaleLowerCase().match(this.searchTerm.toLocaleLowerCase());
});
}
我正在使用名称制作搜索词,该名称是记录数组中的属性或键。在同一个搜索框中,我还想按年龄和课程进行搜索。我怎样才能做到这一点。
<input type ="text" placeholder="search" (input)=" search();" [(ngModel)]="searchTerm">
只需展开搜索过滤器即可包含您的额外条件:
search() {
this.records = this.records.filter((res: any)=>{
return (res.name && res.name.toLocaleLowerCase().match(this.searchTerm.toLocaleLowerCase())) ||
(res.course && res.course.toLocaleLowerCase().match(this.searchTerm.toLocaleLowerCase())) ||
(res.age && res.age.toLocaleLowerCase().match(this.searchTerm.toLocaleLowerCase())) ;
});
}
这假定课程和年龄都是记录数组中的字符串。
您可以尝试使用 || 运算符,其返回语句如下:
this.records = this.records.filter((res: any)=>{
return (res.name.toLocaleLowerCase().match(this.searchTerm.toLocaleLowerCase()) || res.age.match(this.searchTerm) || res.course.toLocaleLowerCase().match(this.searchTerm.toLocaleLowerCase()));
});
尝试:
search() {
this.records = this.records.filter((res: any)=>{
return Object.keys(res).some(item => {
return item.toLocaleLowerCase().match(this.searchTerm.toLocaleLowerCase())
});
});
}
这将搜索对象中的任何属性,并检查其值是否与条件匹配。它将在第一场比赛停止
您可以尝试将条件与 or 结合起来,例如这样。
search() {
this.records = this.records.filter((res: any)=>{
return (res.name.toLocaleLowerCase().match(this.searchTerm.toLocaleLowerCase() ||
res.age.toLocaleLowerCase().match(this.searchTerm.toLocaleLowerCase() ||
res.course.toLocaleLowerCase().match(this.searchTerm.toLocaleLowerCase());
});
}