代码之家  ›  专栏  ›  技术社区  ›  Adam Tomat

Javascript If语句,查看数组

  •  5
  • Adam Tomat  · 技术社区  · 15 年前

    今天下午脑子一片空白,我一辈子都想不出正确的方法:

    if(i!="3" && i!="4" && i!="5" && i!="6" && i!="7" && i!="8" && i!="9" && i!="2" && i!="19" && i!="18" && i!="60" && i!="61" && i!="50" && i!="49" && i!="79" && i!="78" && i!="81" && i!="82" && i!="80" && i!="70" && i!="90" && i!="91" && i!="92" && i!="93" && i!="94"){
    
    //do stuff
    
    }
    

    所有这些数字必须在一个数组中,然后我可以检查 i

    3 回复  |  直到 7 年前
        1
  •  17
  •   meder omuraliev    15 年前
    var a = [3,4,5,6,7,8,9];
    
    if ( a.indexOf( 2 ) == -1 ) { 
       // do stuff
    }
    

    indexOf 退货 -1 如果找不到号码。它返回的不是 -1

    如果需要字符串,请将数字用引号括起来( a = ['1','2']

    IE和其他晦涩/旧的浏览器将需要 方法:

    if (!Array.prototype.indexOf)  
    {  
      Array.prototype.indexOf = function(elt /*, from*/)  
      {  
        var len = this.length >>> 0;  
    
        var from = Number(arguments[1]) || 0;  
        from = (from < 0)  
             ? Math.ceil(from)  
             : Math.floor(from);  
        if (from < 0)  
          from += len;  
    
        for (; from < len; from++)  
        {  
          if (from in this &&  
              this[from] === elt)  
            return from;  
        }  
        return -1;  
      };  
    }  
    
        2
  •  2
  •   tcooc    15 年前

    我的想法是这样的:

    function not(dat, arr) { //"not" function
    for(var i=0;i<arr.length;i++) {
      if(arr[i] == dat){return false;}
    }
    return true;
    }
    
    var check = [2,3,4,5,6,7,8,9,18,19,49,50,60,61,70,78,79,80,81,82,90,91,92,93,94]; //numbers
    
    if(not(i, check)) {
    //do stuff
    }
    
        3
  •  0
  •   Chris Laplante    15 年前

    此解决方案是跨浏览器的:

    var valid = true;
    var cantbe = [3, 4, 5]; // Fill in all your values
    for (var j in cantbe)
        if (typeof cantbe[j] === "number" && i == cantbe[j]){
            valid = false;
            break;
        }
    

    valid true 如果 i 不是“坏”值, false 否则。