javascript查找值是否为非IN数组

时间:2011-06-30 21:53:32

标签: javascript jquery arrays each

我的问题是即使对于重复的条形码,循环也会继续进入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
   }
});

3 个答案:

答案 0 :(得分:38)

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

答案 1 :(得分:9)

in关键字搜索属性,例如,当您想知道对象是否有某些方法可用时。由于您正在寻找值,因此它总是返回false。

您应该使用Gazler建议的数组搜索功能。

答案 2 :(得分:0)

2021 年更新

let myArray = [...new Set([...document.querySelectorAll('li.foo')].map(a => a.dataset.barcode))]

反向工作:使用匹配元素中的 spread syntax 创建一个数组,其中 Map 仅包含 data-barcode 属性。使用它来创建一个新的 Set,然后从该集合创建一个数组