javascript - Array.prototype.includes() (或 .indexOf())的参数总是返回 true?

标签 javascript

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

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

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

如果 someTag 未定义,我当然可以根本不调用该函数,最好没有这个选项。 (我最肮脏的想法是使用 product.tags[0] 但这不适用于空数组并且不可重用。)

想法?或者这根本不可能。

最佳答案

没有这样的值(value)。

更改您的函数,以便它检查魔术值并且不调用includes

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

关于javascript - Array.prototype.includes() (或 .indexOf())的参数总是返回 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44687242/

相关文章:

javascript - 通过作为参数传递和全局变量访问函数内部变量之间的区别?

javascript - 插入填充以补偿 "scrollbar jump"

智能手机上的 JavaScript 内存和 HTML5 LocalStorage 限制

javascript - 如何用 mustache 配置数组迭代?

javascript - 如何在 Adob​​e XD 插件中使用 ES6 模块?

JavaScript - 对象创建与更新

Javascript HTML Table 根据另一个单元格的 onclick 获取第一列的单元格值

javascript - 更新使用双重嵌套数据绑定(bind)的 d3.js (v5) 选择

javascript - 使用 Angular.ui Datepicker 没有显示日期

javascript - JS 中继承不起作用?