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

JavaScript中!=与||运算符逻辑异常:条件判断未按预期执行

问题出在逻辑运算符的误用上!

你这段代码的核心问题是条件判断的逻辑错误,咱们来拆解一下:

你写的条件是:

if(item.Id != "01" || item.Id !="02")

这个逻辑翻译成自然语言是:「如果Id不等于01 或者 不等于02」——但你想想,任何一个Id都不可能同时等于01和02,所以不管Id是01、02还是03,这个条件都会成立:

  • 当Id是01时,它不等于02,满足item.Id != "02",条件成立
  • 当Id是02时,它不等于01,满足item.Id != "01",条件成立
  • 当Id是03时,两个都满足,条件当然成立

这就是为什么三个Id都弹出来了。

修正方案

你需要的是「既不等于01 也 不等于02」的逻辑,所以要把||(逻辑或)换成&&(逻辑与):

var data = "[{\"Id\":\"01\",\"Name\":\"01- Alabama\"},{\"Id\":\"02\",\"Name\":\"02- Arizona\"},{\"Id\":\"03\",\"Name\":\"03- Arkansas\"}]"; 
var myJson = JSON.parse(data); 
for (var key in myJson) { 
  var item = { 
    Id: myJson[key].Id, 
    Name: myJson[key].Name 
  }; 
  // 这里把||换成&&
  if(item.Id != "01" && item.Id !="02") { 
    alert(item.Id); 
  } 
}

或者你也可以用反向逻辑,可读性可能更好:

if(!(item.Id === "01" || item.Id === "02")) {
  alert(item.Id);
}

这个的意思是:「如果Id不是01 也不是 02」,和上面的逻辑是等价的。

这样修改后,就只会弹出"03"的提示框啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:14:29