我可以将值分配给变量,然后在js过滤器方法中使用这些变量吗?
我尝试使用分配给两个变量的本地数据,然后在我的过滤器方法中使用这些变量。我正在尝试此操作,因为我想使用几个不同的过滤器(键和值,例如age:5)过滤数组。我有一个播放器阵列,您可以选择一个或多个选项来过滤播放器。用户选择过滤器时,它们将保存在过滤器[]中。我想遍历滤镜[]并将每个滤镜应用于一组播放器。第一个过滤器需要与所有播放器一起使用在阵列上,然后每个后续的过滤器都可以在过滤后的阵列上使用(使每次迭代变小)。我的代码仅显示了我最初的第一个过滤器方法。
applyFirstFilter() {
let filterValue = this.filters[0];
let filterKey = this.checkValue(filterValue);
console.log("key: " + filterKey + ", filterValue: " + filterValue);
//loop through filters[]
// apply first filter to allPlayers and assign to displayPlayerArray
this.displayedPlayerArray = this.allPlayersArray.filter(player => player.filterKey === filterValue);
console.log("displayed array: " + this.displayedPlayerArray);
// apply all remaining filters to displayPlayerArray
},
控制台显示filterValue和filterKey具有我期望它们具有的值。我所做的所有研究都显示了固定的示例,例如:
var ages = [32, 33, 16, 40];
function checkAdult(age) {
return age >= 18;
}
function myFunction() {
this.localArray = ages.filter(checkAdult);
}
到目前为止,我的filter方法不会影响我的数组。我真的不确定这是否切实可行。 :/有什么想法吗?
答案 0 :(得分:0)
要回答最基本的问题:是的,您可以在过滤器中使用变量。以年龄过滤为例,您可以使用变量而不是固定数字:
var ages = [32, 33, 16, 40];
function checkAge(age, minAge) {
return age >= minAge;
}
function myFunction(minAge) {
return ages.filter((age) => checkAge(age, minAge));
}
myFunction(18); // returns [32, 33, 40];
myFunction(30); // returns [40]
现在,很难弄清楚为什么您的代码无法正常工作。为此,我们需要更多地了解allPlayersArray
和this.filters
答案 1 :(得分:0)
这似乎不正确:
this.displayedPlayerArray = this.allPlayersArray.filter(player => player.filterKey === filterValue);
player.filterKey
将查找名称为filterKey
的属性,它将不使用变量filterKey
。
我猜你想要这样的东西,用方括号:
this.displayedPlayerArray = this.allPlayersArray.filter(player => player[filterKey] === filterValue);
除此之外,我还需要示例数据来进一步调试。