Подтвердить что ты не робот

Javascript find if value is NOT IN array

Моя проблема заключается в том, что цикл продолжает работать в инструкции 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
   }
});
4b9b3361

Ответ 1

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
   }
});

Ответ 2

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

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