【发布时间】:2020-06-08 10:23:44
【问题描述】:
我正在创建一种过滤方法来过滤从 API 获得的数据集。
要过滤的数组,有很多参数的对象,但我想只根据指定的参数来过滤。
示例:
let Cars: Array = [{name: "volvo", color:"red", year: "1999"}, {name: "vw", color:"blue", year: "2000"}];
我的过滤功能:
filterAPIResponse(data: any, textToFilter: string):any {
const keysToFilter = ["name", "color"];
if(textToFilter) {
return data.filter(obj => (keysToFilter.some(val => {
obj[val].toLowerCase().includes(textToFilter.toLowerCase());
})));
} else {
return data;
}
}
所以这总是返回一个空数组,即使我调用:
this.filterAPIResponse(Cars, "volv");
这里我希望"volv" 匹配汽车"volvo",
确实obj[val].toLowerCase().includes(textToFilter.toLowerCase()); 的console.log 确实返回true,但最后的数组是空的。
所以这一定意味着我在filter() 和some() 之间犯了一个错误,我没有看到它?
【问题讨论】:
-
为了更清楚,请
val => { return <condition> }或val => <condition>
标签: javascript angular filter