JavaScript使用filter函数触发类型错误,如何正确修改过滤条件
错误原因
你当前编写的过滤条件element !== 'product' || element !== 'auth'存在逻辑错误:
- 任意字符串不可能同时等于
product和auth两个不同的值,因此这个条件永远返回true,完全起不到过滤效果,这就是报错提示的核心含义。 - 举个实际例子:当元素是
product时,element !== 'auth'的判断结果为真,整个表达式返回真,该元素会被错误保留;当元素是auth时,element !== 'product'的判断结果为真,同样会被错误保留。
修复方法
有两种常用写法,均可实现排除product和auth两个元素的需求:
- 将逻辑或
||替换为逻辑与&&,逻辑含义为保留既不等于product也不等于auth的元素
filter(element => element !== 'product' && element !== 'auth')
- 用数组
includes方法实现,后续需要新增排除项时直接修改数组即可,维护成本更低:
filter(element => !['product', 'auth'].includes(element))
内容的提问来源于stack exchange,提问作者skksks
相关产品推荐
相关产品推荐

