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">
答案 0 :(得分:0)
只需扩展您的搜索过滤器即可包括您的额外条件:
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())) ;
});
}
这假定课程和年龄都是记录数组中的字符串。
答案 1 :(得分:0)
您可以尝试使用||运算符,具有与以下相同的return语句:
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()));
});
答案 2 :(得分:0)
例如,您可以尝试将条件与或组合。
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());
});
}
答案 3 :(得分:0)
尝试:
search() {
this.records = this.records.filter((res: any)=>{
return Object.keys(res).some(item => {
return item.toLocaleLowerCase().match(this.searchTerm.toLocaleLowerCase())
});
});
}
这将搜索对象中的任何属性,并检查其值是否符合条件。它将在第一场比赛停止