我正在创建一个模拟api,其中涉及查询json文件(包含公司对象)以获取特定名称,但是它一直返回null而不是匹配项。我怎样才能解决这个问题?我基于tutorial进行工作。
代码
filterCompanies(searchTerm) {
this.http.get('assets/data/companies.json').map(res => res).subscribe(data => {
this.companies = data;
return this.companies.filter((company) => {
return company.name.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1;
});
});
}
companies.json
[
{
"name": "one"
},
{
"name": "two"
},
{
"name": "three"
},
{
"name": "four"
},
{
"name": "five"
}
]
答案 0 :(得分:2)
不使用return即可直接分配值,
this.companies = data.filter(t=>t.name.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1;
答案 1 :(得分:0)
已过滤的公司现在包含在“ this.comapnies”中,如果您要使用具有“ companies”成员的组件中的公司,则无需从filterCompanies函数中将其返回
答案 2 :(得分:-1)
过滤器不会修改其使用的变量,因此您必须将其分配回所需的变量
filterCompanies(searchTerm) {
this.http.get('assets/data/companies.json').map(res => res).subscribe(data => {
this.companies = data.filter((company) => {
return company.name.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1;
});
});
}
答案 3 :(得分:-2)
您可以使用include来检查名称是否包含搜索字符串
this.companies = [];
this.companies = data.filter((company) => company.name.includes('searchtext'));
或
this.companies = data.filter((company) => company.name.toLowerCase().includes('searchtext'.toLowerCase()));