[英]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 == 01
和Id == 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.