Javascript不等于和OR

时间:2018-05-30 13:32:51

标签: javascript

这看起来很简单,但不确定我在这里做错了什么。

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

我希望只显示一个警告“03”,但它为“01”,“02”和& “03”

看起来像!=和OR运算符不起作用?

3 个答案:

答案 0 :(得分:7)

||运算符的两个操作数均为false(并且在所有其他情况下为false)时,true运算符仅返回&&

true运算符的两个操作数均为true(并且在所有其他情况下为false)时,&&运算符仅返回||

您必须在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); } }代替{{1}}才能获得预期结果:



{{1}}




答案 1 :(得分:1)

实际上正在按预期工作,因为OR运算符在trueId == 01

的情况下返回Id == 02

您要做的是使用AND运算符&&连接两个操作数,这样就可以在Id != 01 AND Id != 02时执行逻辑。< / p>

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

答案 2 :(得分:1)

item.Id != "01" || item.Id !="02"将永远为真,因为它不能同时等于这两个值。

您只需使用&&代替||

&#13;
&#13;
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!
 }
}
&#13;
&#13;
&#13;

⋅ ⋅ ⋅

如果您还打算if(item.Id != "01" && item.Id !="02" && item.Id !="03"),则必须在字符串中使用>比较器和一元+

&#13;
&#13;
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!
 }
}
&#13;
&#13;
&#13;

希望它有所帮助。