我想在我的页面上有一个搜索过滤器。但是,它似乎总是返回未定义的。以下是我的打字稿:
filterItems(searchTerm) {
this.category.forEach((item) => {
return item.data.filter((data) =>{
data.title.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1;
})
});
}
setFilteredItems() {
this.searchControl.valueChanges.debounceTime(500).subscribe(search => {
this.searching = false;
this.loadcategory = this.filterItems(this.searchTerm);
if (this.searchTerm == "") {
this.loadcategory = [];
this.searchresultcount = "0";
} else {
this.loadcategory;
console.log(this.loadcategory)
}
});
}
我控制台.log(this.loadcategory(,但显然它返回为未定义。我的代码中是否有我犯了错误的某个地方?任何帮助将不胜感激。
是的,您确实有一个小错误。您的this.category.filter
回调有返回,但实际上filterItems
不返回任何值。假设this.category
是一个数组,请尝试:
filterItems(searchTerm) {
let temp:any[] =[];
this.category.forEach((item) => {
temp.push(...item.data.filter((data) =>{
data.title.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1;
})
);
});
return temp;//return from function
}