6

私は以下を試しましたが、例外がスローされます:

                if (!$get('sslot_hf0').value in ('X', 'Y', 'Z', '0')) {
                $get('sslot_hf0').value = 'X';
            }

INの演算子に似た関数を探していますSQL

4

7 に答える 7

3

使用できますindexOf

['X', 'Y', 'Z', '0'].indexOf('Z')
> 2
['X', 'Y', 'Z', '0'].indexOf('T')
> -1

if (['X', 'Y', 'Z', '0'].indexOf($get('sslot_hf0').value) !== -1) {
  //...
}
于 2013-01-01T05:31:35.303 に答える
2

以下の関数を同じ目的で使用できます。2番目のパラメーターは配列またはオブジェクトであり、最初のパラメーターは配列またはオブジェクトで検索している値です。

   function inStruct(val,structure)
        {

          for(a in structure)
             {
               if(structure[a] == val)
                 {
                   return true;
                 }
             }
           return false;
        }
if(inStruct('Z',['A','B','Z']))
    {
       //do your stuff
    }

//この関数は継承されたプロパティもトラバースします

つまり、含まれているjsライブラリがある場所

Array.prototype.foo = 10;

よりも

 instruct(10,[1,2,3]) // will return true

オブジェクトについても同じことが起こります。このフィドルを確認してください http://jsfiddle.net/rQ8AH/17/

編集::

コメントありがとうございます...これは更新されたコードです。古い関数も保持したほうがいいと思いました。だから、誰かが違いに気付くことができます。

function inStruct(val,structure)
    {

      for(a in structure)
         {

           if(structure[a] == val && structure.hasOwnProperty(a))
             {
               return true;
             }
         }
       return false;
    }
于 2013-01-01T06:13:55.200 に答える
1

inJavascriptでは同じように機能しません。||(またはOR)演算子を使用してそれらを分割する多重比較を使用する必要があります。

于 2013-01-01T05:16:14.537 に答える
1

SQL:

something in ('X','Y','Z','0')

最新のJavaScript(IE> 8を含む):

['X','Y','Z','0'].indexOf(something)>-1

より現代的なJavaScript(!IE):

['X','Y','Z','0'].includes(something)

includesレガシーブラウザ(IEを含む)用の単純なポリフィルが必要な場合:

if(!Array.prototype.includes) Array.prototype.includes =function(value,start) {
    start=parseInt(start)||0;
    for(var i=start;i<this.length;i++) if(this[i]==value) return true;
    return false;
};

AuxTacoのコメントに敬意を表して、IE>8で機能するポリフィルのバージョンを次に示します。

if (!Array.prototype.includes) Object.defineProperty(Array.prototype, 'includes', {
    value: function(value,start) {
        start=parseInt(start)||0;
        for(var i=start;i<this.length;i++) if(this[i]==value) return true;
        return false;
    }
});
于 2018-08-24T03:05:45.537 に答える
0

便利なセット操作関数が必要で、ライブラリを追加してもかまわない場合は、underscorejsをチェックしてください。

それ以外の場合は、forループを記述して値をループし、等価性チェックを実行することを期待します。

于 2013-01-01T05:34:26.410 に答える
0

アレイを作成する

jquery.inArray()を使用してチェックします

詳細については、こちらをお読みくださいhttp://api.jquery.com/jQuery.inArray/

于 2013-01-01T07:41:11.397 に答える
-1

あなたはそれをすることができます、素晴らしくて簡単です、配列に値を保存して使用するIN

  var temparr = ['x', 'y', 'z', '0'];
     if (!$get('sslot_hf0').value in temparr) {
                $get('sslot_hf0').value = 'X';
            }

お役に立てれば

于 2013-01-01T05:29:12.350 に答える