JavaScript 配列のスパースな性質
JavaScript では、配列は本質的にスパースです。つまり、配列は 0 の間のすべての要素に自動的にメモリを割り当てません。そして現在のインデックス。代わりに、要素はアクセスまたは割り当てられたときにのみ割り当てられます。
たとえば、現時点での要素をインデックスとして設定する次のコードを考えてみましょう。
array[Date.getTime()] = value;
Contraryご想像のとおり、これによってインタプリタは 0 から現時点までのすべての要素が割り当てられるわけではありません。代わりに、アクセスされる特定の要素のみを割り当てます。
ハッシュ テーブルの実装
JavaScript 配列は、ハッシュ テーブルとして内部実装されます。これは、キー (インデックス) が整数だけでなく、文字列、浮動小数点、またはオブジェクトになる可能性があることを意味します。ハッシュ テーブルに挿入されると、すべてのキーは toString() メソッドを使用して文字列に変換されます。
検証コード
この疎な性質は、次のテストで検証できます。コード:
var array = []; array[0] = "zero"; array[new Date().getTime()] = "now"; array[3.14] = "pi"; for (var i in array) { console.log("array[" + i + "] = " + array[i] + ", typeof(" + i + ") == " + typeof(i)); }
このコードは、実際に定義されたインデックスを反復処理し、出力:
array[0] = zero, typeof(0) == string array[1254503972355] = now, typeof(1254503972355) == string array[3.14] = pi, typeof(3.14) == string
これは、中間要素を割り当てずに非整数インデックスも機能することを示しています。ただし、i が 0 から array.length までの範囲で従来の for ループを使用すると、非標準の配列インデックスに関する問題が発生する可能性があることに注意してください。
以上がJavaScript 配列は本当に高密度ですか? それとも疎な動作を示しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。