JavaScript найти, если значение не в массиве - PullRequest
20 голосов
/ 01 июля 2011

Моя проблема в том, что цикл продолжает входить в оператор 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
   }
});

Ответы [ 2 ]

38 голосов
/ 01 июля 2011

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
   }
});
9 голосов
/ 01 июля 2011

Ключевое слово in ищет свойства, например, когда вы хотите узнать, есть ли у объекта какой-либо доступный метод.Поскольку вы ищете значения, он всегда возвращает false.

Вместо этого следует использовать функцию поиска по массиву, как советует Газлер.

...