无法访问外部循环数组

时间:2013-06-22 21:06:31

标签: javascript arrays for-loop

在从for循环中的另一个数组填充后访问数组时,我遇到了一个奇怪的错误。 CustomerName从另一个代码区域传递并保存正确的值。我可以在第一个for循环中警告新数组,但是在第二个for循环中没有这样的运气。我收到一个未定义的错误。

var aLocalDogs = new Array();
for (var a=0; a < localDogs.length; a++) {  
    if(CustomerName === localDogs[a].CustomerName){
        aLocalDogs[a]=localDogs[a];
        alert(aLocalDogs[a].CustomerName);
        alert(aLocalDogs[a].CustomerAddress);
   }
}
for (var b=0; b < aLocalDogs.length; b++) { 
    alert(aLocalDogs[b].CustomerName);
    alert(aLocalDogs[b].CustomerName);
}

非常感谢任何帮助......

1 个答案:

答案 0 :(得分:2)

假设localDogs[a].CustomerNameCustomerName之前不等于a == 5。然后你做:

aLocalDogs[5] = localDogs[5];

在第二个循环中,您尝试访问alocalDogs[0]。你从未分配过它。

请尝试使用aLocalDogs.push(localDogs[a])

var aLocalDogs = new Array();
for (var a=0; a < localDogs.length; a++) {  
    if(CustomerName === localDogs[a].CustomerName){
        aLocalDogs.push(localDogs[a]);
    }
}

由于alocalDogs现已按顺序分配,因此第一个for循环中的警报将不再起作用 - 但我认为这些警报仍然用于调试(否则您只能提醒{{}的值1}})。第二个循环现在应该可以工作。