我想同时迭代两个数组,因为数组A中任何给定索引i
的值对应于数组B中的值。
我目前正在使用此代码,并在致电undefined
或alert(queryPredicates[i])
时收到alert(queryObjects[i])
。
我知道我的数组已填充,因为我在调用之前打印出数组。
//queryPredicates[] and queryObjects[] are defined above as global vars - not in a particular function, and I have checked that they contain the correct information.
function getObjectCount(){
var variables = queryPredicates.length; //the number of variables is found by the length of the arrays - they should both be of the same length
var queryString="count="+variables;
for(var i=1; i<=variables;i++){
alert(queryPredicates[i]);
alert(queryObjects[i]);
}
答案 0 :(得分:10)
任何数组的length
属性的值,是元素的实际数量(更确切地说,是现有最大的索引加上一个)。
如果您尝试访问此索引,它将始终为undefined
,因为它超出了数组的范围(这发生在循环的最后一次迭代中,因为i<=variables
条件)
在JavaScript中,索引从0
处理到length - 1
。
除此之外,请确保您的两个数组具有相同数量的元素。
答案 1 :(得分:3)
如果queryPredicates
没有数字索引,例如0,1,2等,那么当第一个项目的索引为queryPredicates[0]
时,尝试提醒值queryPredicates['some_index']
什么都不警告。
请尝试使用for
循环:
stuff['my_index'] = "some_value";
for (var i in stuff)
{
// will alert "my_index"
alert(i);
// will alert "some_value"
alert(stuff[i]);
}
答案 2 :(得分:2)
JS中的数组是基于零的。长度是实际数量。你的循环超出了数组的范围。