循环每个 jQuery 问题

Loop each jQuery Issue

本文关键字:问题 jQuery 循环      更新时间:2023-09-26

我有这个代码:

var arrayInstSaude = new Array();
$("input[name='uniSaudePrj']:checked").each(function(){
    arrayInstSaude[$(this).val()]=$(this).val();
});

出于某种原因,它给了我一个混乱的数组。示例:

  • 如果我检查 1 个元素值 eq 1。它给了我数组InstSaude长度等于2。
  • 如果我检查 2 个元素值 eq 2。它给了我数组InstSaude长度等于3。
  • 如果我检查 3 个元素值 eq 5。它给了我数组InstSaude长度等于6。
  • 如果我检查 4 个元素值 eq 6。它给了我数组InstSaude长度等于7。
  • 如果我检查 5 个元素值 eq 7。它给了我数组InstSaude长度等于8。

如果我对 5 个元素这样做:

for (var i = 1; i <=arrayInstSaude.length; i++) {
     alert(arrayInstSaude[i]);
}
我将有 1,2,未定义,未定义,5,6,7,

未定义,而预期有 1,2,5,6,7。有人知道发生了什么事吗?谢谢!

数组始终是连续的。
长度只是最高索引加一。

听起来你想要一个碰巧有数字键(没有长度)的常规对象。

替换

for (var i = 1; i <=arrayInstSaude.length; i++) {
     alert(arrayInstSaude[i]);
}

for (var i in arrayInstSaude) {
     alert(arrayInstSaude[i]);
}

考虑阅读Olliej的这个讨论。

我认为这段代码足以满足我的提议:

var arrayInstSaude = new Array();                
var k=0;
$("input[name='uniSaudePrj']:checked").each(function(){                    
    arrayInstSaude[k]=$(this).val();
    k++;
});

重要的是要注意长度是最高索引加一。因此,要检索我们可以使用的元素

for(k=0;k<arrayInstSaude.length;k++){
    alert(arrayInstSaude[k]);
}

因为我们知道最后一个元素都是空的。