Json 根据搜索词返回公司列表

Json 根据搜索词返回公司列表,json,angular,Json,Angular,我正在创建一个模拟api,它涉及查询json文件(包含公司对象)以获取特定名称,但它会不断返回null而不是匹配项。我怎样才能解决这个问题?我是根据这个来做这项工作的 代码 companies.json [ { "name": "one" }, { "name": "two" }, { "name": "three" }, { "name": "four" }, { "name": "five" } ] 不使用re

我正在创建一个模拟api,它涉及查询json文件(包含公司对象)以获取特定名称,但它会不断返回null而不是匹配项。我怎样才能解决这个问题?我是根据这个来做这项工作的

代码

companies.json

[
  {
    "name": "one"
  },
  {
    "name": "two"
  },
  {
    "name": "three"
  },
  {
    "name": "four"
  },
  {
    "name": "five"
  }
]

不使用return,您可以直接赋值

 this.companies = data.filter(t=>t.name.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1;

过滤器不会修改它所处理的变量,所以您必须将其重新分配给desire变量

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;
      });
    });
}

您可以使用includes检查名称是否包含搜索字符串

this.companies = [];

this.companies = data.filter((company) => company.name.includes('searchtext'));


过滤后的公司现在包含在“this.companies”中,如果您想使用包含“companys”成员的组件中的公司,则无需从filterCompanies功能返回该公司

谢谢。我开始犯错误了。1) 类型“Object”上不存在属性“filter”,2)t.nameexOf不是functiondata是数组还是对象?data是对象数组不应该抛出错误,然后检查并告知我仍然收到错误:[app scripts][06:33:23]类型脚本:src/providers/dummy-api/dummy-api.ts,第14行[app scripts]类型“Object”上不存在属性“filter”。[app scripts]L13:this.http.get('assets/data/companys.json').map(res=>res).subscribe(data=>{[app scripts]L14:this.companys=data.filter(t=>t.name.toLowerCase().indexOf(searchTerm.toLowerCase())>-1);[app scripts]L15:});答案不一样吗?变通办法?不确定。我相信如果没有polyfills,Angular应用程序本身将无法在IE中工作
this.companies = [];

this.companies = data.filter((company) => company.name.includes('searchtext'));
this.companies = data.filter((company) => company.name.toLowerCase().includes('searchtext'.toLowerCase()));