在从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);
}
非常感谢任何帮助......
答案 0 :(得分: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
循环中的警报将不再起作用 - 但我认为这些警报仍然用于调试(否则您只能提醒{{}的值1}})。第二个循环现在应该可以工作。