1

for ループ内で別の配列からデータが取り込まれた後に配列にアクセスすると、奇妙なバグが発生します。CustomerName はコードの別の領域から渡され、正しい値を保持しています。最初の for ループ内で新しい配列にアラートを出すことができますが、2 番目の 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

がuntilとlocalDogs[a].CustomerName等しくないとします。次に、次のようにします。CustomerNamea == 5

aLocalDogs[5] = localDogs[5];

2 番目のループでは、にアクセスしようとします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])。2 番目のループが機能するはずです。

于 2013-06-22T21:16:40.650 に答える