jQuery - 使用 each() 和 inArray() 检查数组中是否存在数据元素
jQuery - Checking if -data element exist in array with each() and inArray()
我的目标是检查站点上是否有任何 -data (data-id) 与数组中的元素之一具有相同的值,但 inArray 总是 returns -1
<a href="#" data-id="2">
<a href="#" data-id="3">
<script>
var arrayObjects = <?php echo $json_array; ?>;
console.log(arrayObjects);
$("[data-id]").each(function(){
var data_id = $(this).data('id');
if(jQuery.inArray(data_id, arrayObjects) > -1) { // f
console.log(data_id);
console.log('found');
} else { // nf
console.log(data_id);
console.log('not found');
}
});
从我的控制台:
["2", "3"]
3
not found
2
not found
当您检索 data-id var data_id = $(this).data("id")
时,您会得到一个 Number,而 arrayObjects 包含 Strings !
在这里,检查这个 JSfiddle 你会看到 console.log(typeof(data_id))
是数字。要完成这项工作,只需添加 ""+
以强制 data_id 成为字符串:
jQuery.inArray(""+data_id, arrayObjects)
更新:
正如@barmar 指出的那样,var data_id = $(this).attr('data-id')
更适合 .attr() 方法 return 一个 string, .data() 将数据解析为 JSON,在我们的例子中给出 number。
不再需要将类型强制为字符串的技巧
jQuery.inArray(data_id, arrayObjects)
我的目标是检查站点上是否有任何 -data (data-id) 与数组中的元素之一具有相同的值,但 inArray 总是 returns -1
<a href="#" data-id="2">
<a href="#" data-id="3">
<script>
var arrayObjects = <?php echo $json_array; ?>;
console.log(arrayObjects);
$("[data-id]").each(function(){
var data_id = $(this).data('id');
if(jQuery.inArray(data_id, arrayObjects) > -1) { // f
console.log(data_id);
console.log('found');
} else { // nf
console.log(data_id);
console.log('not found');
}
});
从我的控制台:
["2", "3"]
3
not found
2
not found
当您检索 data-id var data_id = $(this).data("id")
时,您会得到一个 Number,而 arrayObjects 包含 Strings !
在这里,检查这个 JSfiddle 你会看到 console.log(typeof(data_id))
是数字。要完成这项工作,只需添加 ""+
以强制 data_id 成为字符串:
jQuery.inArray(""+data_id, arrayObjects)
更新:
正如@barmar 指出的那样,var data_id = $(this).attr('data-id')
更适合 .attr() 方法 return 一个 string, .data() 将数据解析为 JSON,在我们的例子中给出 number。
不再需要将类型强制为字符串的技巧
jQuery.inArray(data_id, arrayObjects)