javascript if(variable = =(variable2 || variable3 || ...))

时间:2012-10-08 08:48:05

标签: javascript loops

  

可能重复:
  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 || ...) )

更新: 这是片段

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

我尝试了你的建议,但仍然无法正常工作!

7 个答案:

答案 0 :(得分:7)

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

你可以这样做:

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

}

答案 1 :(得分:1)

您有不同的选择。

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

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

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

答案 2 :(得分:1)

你也可以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))

答案 3 :(得分:0)

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

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

这可以通过a来遍历数组并且如果eather值匹配varaible1则返回true 在其他情况下,你应该在for boucle之后返回false

答案 4 :(得分:0)

您无法直接执行此逻辑操作。您必须使用indexOf,因为@xdazz已显示或使用循环,如下所示

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

答案 5 :(得分:0)

您必须使用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

答案 6 :(得分:0)

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

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

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

请注意indexOf()是JS的最新成员 - 如果不存在,请使用“shim”函数将其添加到浏览器中 - 有关详情,请参阅here