2

重複の可能性:
JavaScriptでORステートメントをネストする方法は?

これを行う方法はありますか?

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

variable1がvariable2variable345..のいずれかに等しいかどうかを確認する必要があります。

私はこれを直接行うことはできません:

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

変数の数が正確にわからないので2345...私は持っています

btw variable2 3 45...は私の配列の要素です。これを試しましたが、何も起こりません。

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

このようにすることもできます

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 に答える
1

さまざまなオプションがあります。

  • 純粋なJavaScriptではarray.indexOf(variable1)、配列内で見つからなかった場合に-1を返すを使用できます。詳細はこちら。この機能をサポートしない古いブラウザに注意してください。
  • 多くの異なるjavascriptフレームワークがこの可能性を与えます:多くの異なる参照を使用してSOでこの回答を確認してください

その場合、コードは(最初のソリューションで)次のようになります。

myArray = [variable2, variable3 ...];    
if(myArray.indexOf(variable1) !== -1) 
于 2012-10-08T08:56:12.837 に答える
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 に答える
0

これは、あなたがしていることとしては機能しません。変数2からnのいずれかがブール値Trueと見なすことができるかどうかを確認し、それをvaraible1の値と比較します。

varaible 2からnが配列内にある場合は、関数is_memberを作成して、配列とvaraible1を取得し、boolを送り返す必要があります。

これは、配列を調べてeather値がvaraible1と一致する場合はtrueを返すためにaを使用して実行できます。それ以外の場合は、forboucleの後にfalseを返す必要があります。

于 2012-10-08T08:55:20.447 に答える
0

この論理演算を直接実行することはできません。@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);
于 2012-10-08T08:56:13.820 に答える
0

更新から、最初のエントリがリストの残りの部分で見つかったかどうかを調べたいと仮定します。

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

見つかった文字列sが他の場所からのものである場合は、その行を削除し.shift()ます。

これはJSに最近追加されたものであることに注意してくださいindexOf()。「shim」関数を使用して、存在しない場合はブラウザに追加してください。詳細については、こちらを参照してください。

于 2012-10-08T09:09:39.573 に答える