Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript if(variable==(variable2 | | variable3 | |……)_Javascript_Loops - Fatal编程技术网

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

javascript if(variable==(variable2 | | variable3 | |……),javascript,loops,Javascript,Loops,可能重复: 有没有办法做到这一点: if( variable1 == (variable2 || variable3 || ...) ) 我需要检查variable1是否等于variable2variable345 我不能直接这样做: if( (variable1 == variable2) || (variable1 == variable3) || ...) ) 因为我不知道到底有多少变量2 3 4 5。。。我有 顺便说一句,变量2 3 4 5。。。是数组的元素。我试过了,但什么都

可能重复:

有没有办法做到这一点:

 if( variable1 == (variable2 || variable3 || ...) )
我需要检查variable1是否等于variable2variable345

我不能直接这样做:

 if( (variable1 == variable2) || (variable1 == variable3) || ...) )
因为我不知道到底有多少变量2 3 4 5。。。我有

顺便说一句,变量2 3 4 5。。。是数组的元素。我试过了,但什么都没发生

if( variable1 == (variable2 || variable3 || ...) )
更新: 下面是片段

假设strskill等于:

abc|def|ghi|jkl|

var myskl=document.getElementById('strskill').value.split(“|”);
对于(var q=0;q-1)
{   
继续;
}   

我试过你的建议,但还是不起作用

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

你可以像下面这样做:

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

}

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

如果变量2到n在一个数组中,您应该创建一个函数is_成员,获取数组和变量1并发回布尔值

这可以通过一个数组来完成,如果eather值与varaible1匹配,则返回true
在其他情况下,您应该在for boucle之后返回false,因为您有不同的选项

  • 在纯javascript中,可以使用
    array.indexOf(variable1)
    ,如果在数组中找不到它,它将返回-1。更多信息。小心那些不支持此功能的旧浏览器
  • 许多不同的javascript框架都提供了这种可能性:请使用许多不同的引用来检查这个答案
然后,您的代码将是(使用第一个解决方案):


不能直接执行此逻辑操作。您必须使用@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);
函数数组(数组,val){
对于(var i=0;i
您也可以这样做

a=1;
b=[1,2,3,4];
功能检查(a、b){
i=0;

对于(i=0;i您必须使用
for
/
循环检查此项。如果您希望保持
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 :-(');
}
if((函数(arr,compareTo){

对于(var i=0;i

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

var myskl = document.getElementById('strskill').value.split("|");
var s = myskl.shift();
var found = (myskl.indexOf(s) >= 0);
如果要找到的字符串
s
s来自其他地方,请删除
.shift()


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

@IvorySantos如果要将其与IE一起使用,则仅适用于版本9或更高版本above@xdazz我试过你的例子,请看我更新的问题。它仍然没有working@Andreas我试过indexOf,现在正在使用firefox,但仍然没有working@IvorySantos你的代码是s严重损坏-您需要
myskl[q]
的值,但您只是创建了一个字符串,上面写着
“myskl[q]”
@IvorySantos请检查这个简单的演示。那么您想知道
abc
是否在
def | ghi |
中找到吗?我有一个“相同”的问题@Alnitak NO。我想知道我的数组[I]等于'abc'或'def'或ghiI最近已经猜到并尝试过了。但是我遇到了一个问题,我如何才能“继续”;到下一个迭代,因为我需要避开两个循环。直到我看到你的答案,让我再想想。砰的一声,我找到了一个解决方案。谢谢@Kidmenot高兴能帮助@IvorySantos
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))
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 :-(');
}
var myskl = document.getElementById('strskill').value.split("|");
var s = myskl.shift();
var found = (myskl.indexOf(s) >= 0);