Array.prototype.includes()(或.indexOf())的参数将始终返回true?

时间:2017-06-21 22:27:57

标签: javascript

我目前正在使用数组includes()方法来过滤对象。例如。

products.filter((product) => (
        product.tags.includes(someTag)
))

但是,我希望有一些默认的someTag值始终返回true - 基本上是默认值"不过滤"价值会是。但我无法想出一个。等效于String.prototype.indexOf中的空字符串,但我知道没有可比较的值。

如果someTag未定义,我当然不能完全调用该函数,没有这个选项会很好。 (我最肮脏的想法是使用product.tags[0],但这对于空数组不起作用,并且不可重复使用。)

想法?或者这是不可能的。

2 个答案:

答案 0 :(得分:2)

没有这样的价值。

更改您的功能,以便检查神奇值并且不会调用includes

products.filter((product) => (
    someTag === undefined || product.tags.includes(someTag)
))

答案 1 :(得分:0)

没有这样的价值。

要不过滤数组,请勿调用includes

products.filter(product => someTag === specialTag || product.tags.includes(someTag))

或换出完整的谓词函数

products.filter(someTag === specialTag
  ? product => true
  : product => product.tags.includes(someTag)
)

或根本不打电话给filter

someTag === specialTag
  ? products
  : products.filter(product => product.tags.includes(someTag))