代码之家  ›  专栏  ›  技术社区  ›  kaka1234

javascript不等于和或

  •  1
  • kaka1234  · 技术社区  · 6 年前

    这看起来是一个简单的代码,但不确定我在这里做错了什么。

    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”各3个警报

    看起来像!=和/或操作员不工作?

    3 回复  |  直到 6 年前
        1
  •  8
  •   Mamun    6 年前

    这个 || 只返回运算符 false 当它的两个操作数都是 (和) true 在所有其他情况下)。

    这个 && 只返回运算符 当它的两个操作数都是 (和) 在所有其他情况下)。

    你必须使用 && 而不是 γ 在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);   
     }
    }
        2
  •  1
  •   Ele    6 年前

    实际上是按预期工作,因为 OR 接线员回来了 true 在以下情况下 Id == 01 Id == 02

    要做的是将两个操作数与and运算符连接起来 && 这样当 Id != 01 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);
      }
    }
        3
  •  1
  •   Takit Isy Surendra    6 年前

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

    小精灵 小精灵 小精灵

    如果你也打算这么做 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!
     }
    }

    希望有帮助。