You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OR运算符排除数组元素时逻辑错误,求原因及解决方法

问题分析与解决

嘿,这个逻辑判断的小坑真的很容易踩!咱们来拆解下你的问题出在哪:

你写的条件是:

if (arr[page] !== "page-name" || arr[page] !== "some-more")

这里用了逻辑或(||),但这个条件永远都会成立——因为任何一个页面名称,不可能同时等于"page-name"和"some-more",所以不管当前页面是哪一个,要么不等于前者,要么不等于后者,结果永远是true,自然所有页面都被打印出来了。

你真正想要的逻辑是:当前页面既不是"page-name",也不是"some-more",这时候应该用逻辑与(&&),或者换一种更易维护的写法。

修正方案1:修改逻辑运算符

把||换成&&,这样只有当两个条件都满足时(既不是要排除的第一个页面,也不是第二个),才会执行输出:

var arr = ["page-name", "page-name-two", 'page-3', 'some-more', 'another-page'];
for (var page in arr) {
    if (arr[page] !== "page-name" && arr[page] !== "some-more") {
        console.log(arr[page])
    }
}

修正方案2:用数组includes优化(更易扩展)

如果以后要排除更多页面,一个个写!==会很麻烦,可以把要排除的页面放进一个数组,然后用includes判断:

var arr = ["page-name", "page-name-two", 'page-3', 'some-more', 'another-page'];
var excludedPages = ["page-name", "some-more"];
for (var page in arr) {
    if (!excludedPages.includes(arr[page])) {
        console.log(arr[page])
    }
}

这样以后加排除项,只需要往excludedPages数组里加元素就行,代码更简洁。

两种方案执行后,都会输出你期望的结果:

page-name-two
page-3
another-page

内容的提问来源于stack exchange,提问作者Amit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:24:20