即使在Javascript中匹配后,过滤器也不会返回任何内容

时间:2017-06-22 06:20:05

标签: javascript vuejs2

所以我尝试在我的一个函数中使用这个Filter,但是即使匹配很少,过滤器也返回空数组。

代码

filteredCardList: function () {

  if (this.monthFilter.length > 0) {
    return this.cardList.filter((card) => {
      this.monthFilter.forEach(function (val) {
        if (val.toString() == card.months) {
          console.log('Matched')
          return true;
        } else {
          console.log('NoMatch')
          return false;
        }
      });
    })
  } else {
    return this.cardList
  }
}

任何想法,非常欢迎

感谢

1 个答案:

答案 0 :(得分:1)

好的,假设monthFilter是一个数组,并且您希望使用任何匹配类型按内部值过滤cardList,请尝试使用Array.prototype.some < / p>

filteredCardList: function () {
  if (this.monthFilter.length > 0) {
    return this.cardList.filter(card => {
      return this.monthFilter.some(val => {
        return val.toString() == card.months
      })
    })
  } else {
    return this.cardList
  }
}

您的问题是,return true / return false只是从forEach回调中返回,而filter回调中没有返回任何内容。