0

我有这个代码:

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

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

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

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

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

我将有 1,2,undefined,undefined,5,6,7,undefined,而预期有 1,2,5,6,7。有人知道发生了什么吗?谢谢!

4

3 回答 3

3

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

听起来您想要一个恰好有数字键(并且没有长度)的常规对象。

于 2013-11-04T17:13:41.520 回答
0

代替

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

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

考虑阅读olliej 的这篇讨论

于 2013-11-04T18:34:14.290 回答
0

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

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

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

于 2013-11-05T10:34:33.167 回答