【问题标题】:javascript if( variable = =(variable2 || variable3 || ...)) [duplicate]javascript if(变量= =(变量2 ||变量3 || ...))[重复]
【发布时间】:2013-05-07 17:32:35
【问题描述】:

可能重复:
How to nest OR statements in JavaScript?

有没有办法做到这一点:

 if( variable1 == (variable2 || variable3 || ...) )

我需要检查 variable1 是否等于 variable2 variable3 4 5...

我不能直接这样做:

 if( (variable1 == variable2) || (variable1 == variable3) || ...) )

因为我不知道到底有多少个变量2 3 4 5...我有

btw variable2 3 4 5... 是我数组的元素。我试过了,但没有任何反应。

if( variable1 == (variable2 || variable3 || ...) )

更新: 这是sn-p

假设 strskill 等于:

abc|def|ghi|jkl|

 var myskl = document.getElementById('strskill').value.split("|");


 for(var q=0; q<(myskl.length); q++)
        {
            var r = r + "myskl[q], ";
            var s = r + "myskl[q]";             
        }

        if(s.indexOf(myArray[i]) > -1)
        {   
            continue;
        }   

我试过你的建议,但还是不行!

【问题讨论】:

  • 所以您想查找abc 是否在def|ghi|... 等中找到?
  • 我有同样的问题here
  • @Alnitak NO.我想知道 myArray[i] 是否等于 'abc' 或 'def' 或 ghi

标签: javascript loops


【解决方案1】:

您不能这样做,因为A || B || C || ... 总是返回第一个真值。

你可以这样做:

if ([variable2, variable3, variable4, ...].indexOf(variable1) > -1) {

}

【讨论】:

【解决方案2】:

你也可以这样做this way

a = 1;
b = [1,2,3,4];


function check(a,b){
    i = 0;        
     for (i=0;i<b.length;i++) {
        if (a === b[i]) {
             return true;
        }
    }
    return false;
 }

alert(check (a,b))

【讨论】:

  • 我已经猜到了,最近也试过了。但我对如何“继续”有疑问;到下一次迭代,因为我需要转义两个循环。直到我看到你的答案,让我再想一想。并且繁荣,我找到了解决方案。谢谢@kidmenot
  • 很高兴为您提供帮助@IvorySantos
【解决方案3】:

你有不同的选择。

  • 在纯 javascript 中,您可以使用 array.indexOf(variable1),如果在数组中没有找到它,则返回 -1。更多信息here。请注意不支持此功能的旧版浏览器。
  • 许多不同的 javascript 框架都提供了这种可能性:在 SO 上查看这个答案,并提供许多不同的参考

您的代码将是(使用第一个解决方案):

myArray = [variable2, variable3 ...];    
if(myArray.indexOf(variable1) !== -1) 

【讨论】:

    【解决方案4】:

    这不会像您正在做的那样工作检查变量 2 到 n 中的任何一个是否可以被视为布尔值 True,然后将其与变量 1 的值进行比较

    如果变量 2 到 n 在一个数组中,你应该创建一个函数 is_member 获取数组和变量 1 并返回一个 bool

    这可以通过一个 for 遍历数组并返回 true 来完成 在其他情况下,您应该在 for boucle 之后返回 false

    【讨论】:

      【解决方案5】:

      您不能直接执行此逻辑操作。您必须使用@xdazz 所示的indexOf,或者使用如下所示的循环

      function inArray(array, val){
          for(var i = 0; i < array.length; i++){
             if(array[i] == val){
                return true;
             }
          }
          return false;
      }
      
      var arr = [3, 4, 5, 6, 7, 8, 9];
      var var1 = 90;
      inArray(arr, var1);
      

      【讨论】:

        【解决方案6】:

        您必须使用 for / while 循环来检查这一点。如果要保持if 语句完整,可以使用匿名函数: var myArr=[false,true,true,false];

        if((function(arr,compareTo){
            for( var i=0;i<arr.length;i++){
             if(arr[i]==compareTo) return true;   
            }
            return false;
        })(myArr,true)){
        // ⇑⇑⇑⇑     ⇖The variable you want to check against
        //The array with the values you want to check
            document.write('Yes!')
        
        }else{
                document.write('No :-(');
        }
        

        View this example at JSFiddle

        【讨论】:

          【解决方案7】:

          假设从您的更新中您想查找第一个条目是否在列表的其余部分中:

          var myskl = document.getElementById('strskill').value.split("|");
          var s = myskl.shift();
          var found = (myskl.indexOf(s) >= 0);
          

          如果要找到的字符串ss 来自其他地方,请删除.shift() 行。

          请注意,indexOf() 是最近添加到 JS 中的 - 如果它不存在,请使用“shim”函数将其添加到浏览器中 - 请参阅 here 了解更多信息。

          【讨论】:

            猜你喜欢
            • 2016-04-19
            • 1970-01-01
            • 1970-01-01
            • 2012-06-01
            • 1970-01-01
            • 1970-01-01
            • 2012-11-05
            • 2011-08-22
            相关资源
            最近更新 更多