首页 > 解决方案 > 我可以在过滤方法中使用变量吗?

问题描述

我可以为变量赋值,然后在 js 过滤方法中使用这些变量吗?

我正在尝试使用分配给两个变量的本地数据,然后在我的过滤器方法中使用这些变量。我正在尝试这个,因为我想使用几个不同的过滤器(键和值,例如年龄: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);
} 

到目前为止,我的过滤方法不会影响我的数组。我真的不确定这实际上是否可行。: / 有任何想法吗?

标签: javascriptvue.jsfiltering

解决方案


要回答您最基本的问题:是的,您可以在过滤器中使用变量。以年龄过滤为例,您可以使用变量而不是固定数字:

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]

现在,为什么你的代码不工作有点难以弄清楚。为此,我们需要更多地了解allPlayersArraythis.filters


推荐阅读