简体   繁体   English

Javascript不等于和OR

[英]Javascript not equal and OR

This looks a simple code but not sure what I am doing wrong here. 这看起来很简单但不确定我在这里做错了什么。

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);   
 }
}

I am expecting to just show an alert as "03" but it shows 3 alert each for "01", "02" & "03" 我希望只显示一个警告“03”,但它为“01”,“02”和“03”分别显示3个警报

Looks like != and OR operator not working ? 看起来像!=和OR运算符不工作?

The || || operator only returns false when both of its operands are false (and true in all other cases). 操作人员只需将返回false当两个操作数都是false (和true在所有其他情况下)。

The && operator only returns true when both of its operands are true (and false in all other cases). &&运算符仅返回true当两个操作数都是true (和false在所有其他情况下)。

You have to use && instead of || 您必须使用&&而不是|| in the if condition to get the expected result: 在if条件下获得预期结果:

 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); } } 

Actually is working as expected because the OR operator is returning true for cases when Id == 01 and Id == 02 实际上正在按预期工作,因为对于Id == 01Id == 02情况, OR运算符返回true

What you want to do is to join the two operands with AND operator && and this way execute the logic just when Id != 01 AND Id != 02 . 你想要做的是用AND运算符&&连接两个操作数,这样就在Id != 01 AND Id != 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); } } 

item.Id != "01" || item.Id !="02" item.Id != "01" || item.Id !="02" will always be true, as it can't be equal to both of the values at the same time. item.Id != "01" || item.Id !="02"将始终为true,因为它不能同时等于这两个值。

You only need to use && instead of || 您只需要使用&&而不是|| :

 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") { console.log(item.Id); // I prefer consoling, that's less agressive! } } 

⋅ ⋅ ⋅ ⋅·⋅

If you also plan to do if(item.Id != "01" && item.Id !="02" && item.Id !="03") , you must want to use a > comparator and unary + on your string: 如果你还打算做if(item.Id != "01" && item.Id !="02" && item.Id !="03") ,你必须在字符串上使用>比较器和一元+

 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 > 2) { console.log(item.Id); // I prefer consoling, that's less agressive! } } 

Hope it helps. 希望能帮助到你。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM