私はちょうど奇妙なことを経験しました.これは私が実際に使用しているコードです:
for (iter in data.List) {
console.log(iter);
}
ご想像のとおり、ログには各行の番号 (0、1、2...) が表示されるはずですが、代わりに次のように表示されます。
0
1
2
remove
私の配列には3行しかないことを知っている
誰もこれに遭遇したことがありますか?
私はちょうど奇妙なことを経験しました.これは私が実際に使用しているコードです:
for (iter in data.List) {
console.log(iter);
}
ご想像のとおり、ログには各行の番号 (0、1、2...) が表示されるはずですが、代わりに次のように表示されます。
0
1
2
remove
私の配列には3行しかないことを知っている
誰もこれに遭遇したことがありますか?
基本的に、問題は、for in
ループを使用して配列を反復処理していることです。これは、配列を反復処理するためのものではありません。その意図は、オブジェクトのすべてのプロパティを反復処理することであり、明らかにremove
配列で呼び出されるプロパティがあります。
for in
配列に関してなぜ悪い考えなのかについての詳細は、配列反復で "for...in" を使用するのはなぜ悪い考えなのかを参照してください。.
解決策として、インデックス付きfor
ループを使用することをお勧めします。このタイプのループはプロパティを気にしないため、問題ありません。したがって、基本的には非常に古典的なものになります。
for (var i = 0; i < data.List; i++) {
console.log(data.List[i]);
}
ところで、JavaScript では、コンストラクター関数でない限り、大文字を使用しないでください。したがって、それはあるべきですdata.list
。
PS: 配列とそれらの (誤) 使用に関しては、読みやすい読み物です。Fun with JavaScript Arraysを読んでください。非常に読みやすいです。
はい、それがfor..in
JavaScript での動作です。すべてのオブジェクトプロパティ (配列インデックスではない) を列挙します。簡単な解決策:for..in
配列では使用しないでください。それは目的ではないためです。