21

私は変数を持っています:

var code = "de";

そして、私は配列を持っています:

var countryList = ["de","fr","it","es"];

変数がcountryList配列内にあるかどうかを確認する必要があるので、誰かが私を助けてくれますか-私の試みはここにあります:

    if (code instanceof countryList) {
        alert('value is Array!');
    } 

    else {
        alert('Not an array');
    }

しかし、実行時に console.log に次のエラーが表示されます。

TypeError: 無効な 'instanceof' オペランド countryList

4

7 に答える 7

33

使用する必要がありますArray.indexOf

if (countryList.indexOf(code) >= 0) {
   // do stuff here
}

IE8 (およびその他のレガシー ブラウザ) ではサポートされていないことに注意してください。詳細については、こちらをご覧ください。

于 2012-11-22T09:39:38.103 に答える
23

jQueryには、要素が配列に存在するかどうかを調べるユーティリティ関数があります

$.inArray(value, array)

配列に値が存在しない場合はarray、値のインデックスを返します。-1あなたのコードは次のようになります

if( $.inArray(code, countryList) != -1){
     alert('value is Array!');
} else {
    alert('Not an array');
}
于 2012-11-22T09:44:29.097 に答える
5

Array.indexOf関数を探しているようです。

于 2012-11-22T09:39:47.420 に答える
4

instanceofオブジェクトが特定のタイプであるかどうかを確認するためのものです(これはまったく別のトピックです)。したがって、作成したコードの代わりに、配列を参照する必要があります。次のようにすべての要素を確認できます。

var found = false;
for( var i = 0; i < countryList.length; i++ ) {
  if ( countryList[i] === code ) {
    found = true;
    break;
  }
}

if ( found ) {
  //the country code is not in the array
  ...
} else {
  //the country code exists in the array
  ...
}

または、関数を使用するより簡単な方法を使用できindexOf()ます。すべての配列にはindexOf()、要素をループして配列内のインデックスを返す関数があります。要素が見つからない場合は、-1 を返します。したがって、の出力をチェックしてindexOf()、文字列に一致するものが配列内に見つかったかどうかを確認します。

if (countryList.indexOf(code) === -1) {
  //the country code is not in the array
  ...
} else {
  //the country code exists in the array
  ...
}

2 番目のアルゴリズムの方が簡単なので、2 番目のアルゴリズムを使用します。しかし、最初のアルゴリズムも読みやすいので優れています。どちらも収入は同じですが、2 番目の方がパフォーマンスが高く、短くなっています。ただし、古いブラウザー (IE < 9) ではサポートされていません。

JQuery ライブラリを使用している場合はinArray()、すべてのブラウザで動作する関数を使用できます。と同じで、indexOf()探している要素が見つからない場合は -1 を返します。したがって、次のように使用できます。

if ( $.inArray( code, countryList ) === -1) {
  //the country code is not in the array
  ...
} else {
  //the country code exists in the array
  ...
}
于 2012-11-22T09:46:51.137 に答える
3

jqueryでは、次を利用できます

jQuery.inArray() - 配列内で指定された値を検索し、そのインデックス (見つからない場合は -1) を返します。

if ($.inArray('de', countryList ) !== -1) 
{
}

for javascript solution check existing 配列に JavaScript のオブジェクトが含まれているかどうかを確認するにはどうすればよいですか?

Array.prototype.contains = function(k) {
    for(p in this)
        if(this[p] === k)
            return true;
    return false;
}
for example:

var list = ["one","two"];

list.contains("one") // returns true
于 2012-11-22T09:40:19.800 に答える
2

純粋な JavaScript ソリューションの場合は、配列を走査するだけです。

function contains( r, val ) {
    var i = 0, len = r.length;

    for(; i < len; i++ ) {
        if( r[i] === val ) {
            return i;
        }
     }
     return -1;
}
于 2012-11-22T09:47:21.700 に答える
0

jQueryの使用

$.inArray()を使用できます

$.inArray(value, array)

アイテムのインデックスを返すか、見つからない場合は -1 を返します

于 2012-11-22T09:41:19.270 に答える