1

在从 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);
}

任何帮助将不胜感激...

4

1 回答 1

2

假设localDogs[a].CustomerName不等于CustomerName直到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循环中的警报将不再起作用 - 但我认为这些都是用于调试的(否则你可以只警报 的值localDogs[a])。第二个循环现在应该可以工作了。

于 2013-06-22T21:16:40.650 回答