JavaScript - 配列のループに「for in」は使わない方がいい

ここでは配列のループに「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() を使うことをおすすめします。

参考記事: MSDN for...in

「for in」文を使ってもいい場合

インデックスの順番どおりに参照しなくてもいい場合は、 配列のループに「for in」文を使っても問題ありません。

まとめ

★ 配列のループに「for in」文は使わない方が良い。

★ 理由はインデックスの順番どおりに参照できるとは限らないから。

★ インデックスの順番どおりでなくてもOKなら使用できる。

スポンサードサーチ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする