JavaScript 配列は本当に高密度ですか? それとも疎な動作を示しますか?

Barbara Streisand
リリース: 2024-11-13 10:32:02
オリジナル
860 人が閲覧しました

Are JavaScript Arrays Truly Dense, or Do They Exhibit Sparse Behavior?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート