2

可能重复:
如何在 JavaScript 中嵌套 OR 语句?

有没有办法做到这一点:

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

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

我不能直接这样做:

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

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

顺便说一句 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;
        }   

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

4

7 回答 7

7

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

你可以这样做:

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

}
于 2012-10-08T08:49:37.133 回答
1

你有不同的选择。

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

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

myArray = [variable2, variable3 ...];    
if(myArray.indexOf(variable1) !== -1) 
于 2012-10-08T08:56:12.837 回答
1

你也可以这样

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

​</p>

于 2012-10-08T08:59:08.693 回答
0

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

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

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

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

于 2012-10-08T09:09:39.573 回答
0

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

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

这可以通过 for 遍历数组并返回 true 来完成,如果 ether 值匹配 varaible1 在其他情况下,您应该在 for boucle 之后返回 false

于 2012-10-08T08:55:20.447 回答
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);
于 2012-10-08T08:56:13.820 回答
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 :-(');
}

在 JSFiddle 查看这个例子

于 2012-10-08T09:00:21.203 回答