所以对我来说,使用字符串处理的indexOf函数无法正常工作。我得到了“ Betreiber”类型的对象列表。就像您在屏幕截图中看到的那样,我可以正确获取数据。但是我不能用indexOf过滤,我不明白为什么?
getFiltList(searchquery: string): Observable<Betreiber[]>{
return Observable.create( observable => {
this.fbProvider.getListObs().subscribe( allItems => {
console.log("Query: " + searchquery);
console.log(allItems);
let filteredList = allItems.filter(b => b.name.indexOf(searchquery) > -1); <!-- stop doing work here.. !-->
console.log(filteredList);
observable.next(filteredList);
observable.complete();
});
});
}
Screenshot 1: Console log with query input="Test123"
如果我将其更改为let filteredList = allItems.filter(b => b.name === searchquery);
搜索类型为“ Betreiber”的对象的确切名称有效 Console log with query: Test123 after line change
希望可以为您提供帮助。.还尝试使用.toLowerCase()
作为搜索查询和课程名称:)
答案 0 :(得分:0)
似乎您的数据数组的最后一项{anschrift:{...},bankverbindung:{...},id:..., name2:...}
没有属性name
,而是name2
。
因此,b.name.indexOf(searchquery)
无法执行,并且会调用运行时错误,因为b.name
是undefined
,而b.name === searchquery
可以执行。