配列は Javascript のオブジェクトですが、配列を走査するために for in ループを使用することはお勧めできません。実際、配列に対して for in ループを使用できない理由はたくさんあります。
for in ループはプロトタイプ チェーン上のすべてのプロパティを列挙し、それを停止する唯一の方法は hasOwnProperty を使用して判断することであるため、これは通常の for ループよりもはるかに遅くなります。
トラバース
最高のパフォーマンスを得るには、配列を反復処理する最良の方法は、従来の for ループを使用することです。
ここでの追加のトリックは、l = list.length を使用して配列の長さをキャッシュすることです。
length プロパティが配列自体に定義されている場合でも、ループの各反復には依然としてオーバーヘッドが存在します。最新の Javascript エンジンにはこの状況に合わせてパフォーマンスが最適化されている可能性がありますが、JavaScript コードが常にこのブラウザで実行されるという保証はありません。
実際、キャッシュされていない長さのループは、キャッシュされた長さのループよりもはるかに遅くなります。
長さ属性
length プロパティはゲッター メソッドを通じて配列内の要素の数のみを返しますが、配列はセッター メソッドを通じて切り詰めることができます。
length プロパティに小さい数値を代入すると配列が切り詰められますが、大きい数値を代入しても配列は切り捨てられません。
概要
最適なパフォーマンスを得るには、for in ループの代わりに for ループを使用し、長さプロパティをキャッシュすることをお勧めします。
メソッドを持たず、一意の属性長が 1 つだけの配列オブジェクトもあります。文字列オブジェクトには長さメソッドがあります~~