JavaScript 配列のスパース性の調査
AIX カーネルの擬似 tty バグと同様に、JavaScript 配列の動作に関して疑問が生じます。非常に多様な指数を利用する場合。具体的には、非常に高いインデックスで要素をインスタンス化すると、インタープリタはすべての中間要素をインスタンス化しますか?
JavaScript 配列は疎ですか?
答えは、完全に「はい」です。 JavaScript 配列は実際にはハッシュ テーブルとして内部的に実装されます。これは、整数、文字列、浮動小数点、さらにはオブジェクトを含むさまざまなデータ型をインデックスに利用できることを意味します。すべてのキーは、ハッシュ テーブルに追加される前に、toString() メソッドを介して文字列に変換されます。
これを示すために、次のコード スニペットを考えてみましょう。
var array = []; array[0] = "zero"; array[new Date().getTime()] = "now"; array[3.14] = "pi"; for (var i in array) { alert("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
ご覧のとおり、配列にはインデックス 0、大きなタイムスタンプの要素が含まれています。 3.14.
結論
AIX カーネルのバグとは異なり、JavaScript 配列はスパース インデックスをシームレスに処理します。ハッシュ テーブルとして実装すると、不連続なインデックスを持つ要素を効率的かつ柔軟に保存できます。この動作を理解することで、開発者は予期せぬ結果を恐れることなく、自信を持って JavaScript 配列を利用できるようになります。
以上がJavaScript 配列はスパースですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。