javascript查找值是否为非IN数组

sad*_*ave 20 javascript arrays each jquery

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

Gaz*_*ler 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
   }
});
Run Code Online (Sandbox Code Playgroud)

  • 你的代码错了,`!($.inArray(iBarCode,myArray)`如果元素在位置0就失败了.你应该使用`!!〜($.inArray(iBarCode,myArray)`代替. (2认同)

sla*_*ppy 9

in关键字搜索的属性,例如,当你想知道,如果一个对象有一些有效的方法.由于您正在查找值,因此它始终返回false.

你应该使用Gazler建议的数组搜索功能.

  • 如果不使用jquery,只需使用`if(myArray.indexOf(iBarCode)=== -1){//做别的事情}` (5认同)
  • +1用于解释代码无效的原因. (2认同)