我的问题是即使对于重复的条形码,循环也会继续进入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
}
});
答案 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,然后从该集合创建一个数组