ここでは配列のループに「for in」文をおすすめしない理由を説明します。
JavaScript でループ処理の1つとして「for in」文があります。
「for in」文はオブジェクトのプロパティ名を巡回する繰り返し文です。
JavaScript では配列もオブジェクトですから、「for in」文を使えますが・・・。
「for in」文を使った配列のループ
次のコードは、「for in」文を使って配列のループ処理を行っています。
var arr = ["a", "b", "c", "d", "e"];
for (var i in arr){
console.log(arr[i]);
}
// 実行結果
a
b
c
d
e
配列のループに「for in」文をおすすめしない理由
上のサンプルコードでは、実行結果が「a, b, c, d, e」と、 配列に格納されている順番に表示されています。
ですが、「for in」文は繰り返しの順序が実装依存で、 配列に格納されている順番で参照できるとは限りません。
上のサンプルコードで言うと、実行結果が「a, b, e, d, c」となる可能性もあります。
通常、配列では格納されている順番が大事で、 インデックスの順番どおりに参照することが多いと思われます。
ですから、順番どおりに参照できるとは限らない「for in」文は 配列には使わない方がいいでしょう。
配列のループには「for in」文ではなく、 for 文や forEach() を使うことをおすすめします。
「for in」文を使ってもいい場合
インデックスの順番どおりに参照しなくてもいい場合は、 配列のループに「for in」文を使っても問題ありません。まとめ
★ 配列のループに「for in」文は使わない方が良い。
★ 理由はインデックスの順番どおりに参照できるとは限らないから。
★ インデックスの順番どおりでなくてもOKなら使用できる。