web-dev-qa-db-ja.com

値が配列にない場合はjavascriptを検索

これに関する私の問題は、バーコードが重複している場合でもループがifステートメントに入ることです。一意のバーコードのみにifステートメントを入力しようとしていますが、ループの最後にmyArrayに重複があります....なぜですか?

var myArray = new Array();  var i = 0;
$("li.foo").each(function(){
   var iBarCode = $(this).attr('barcode');
   if( !( iBarCode in myArray ) ){
      myArray[i++] = iBarCode;
      //do something else
   }
});
20
sadmicrowave

Jqueryには inArray() 関数があります。

var myArray = new Array();  var i = 0;
$("li.foo").each(function(){
   var iBarCode = $(this).attr('barcode');
   if( $.inArray(iBarCode, myArray) == -1 ){
      myArray[i++] = iBarCode;
      //do something else
   }
});
38
Gazler

inキーワードは、たとえばオブジェクトに使用可能なメソッドがあるかどうかを知りたい場合に、プロパティを検索します。値を探しているため、常にfalseを返します。

代わりに、Gazlerが推奨するように、配列検索機能を使用する必要があります。

9
slaphappy