1. ホーム
  2. javascript

[解決済み] Javascriptの配列は疎なのか?

2022-11-16 12:46:52

質問

つまり、現在時刻を配列のインデックスとして使用する場合です。

array[Date.getTime()] = value;

は、0から現在までのすべての要素をインタプリタがインスタンス化するのでしょうか? ブラウザによってその方法は違うのでしょうか?

以前はバグがあったと記憶しているのですが、今回は AIX カーネルにバグがあって、リクエストに応じて擬似 tty を作成するのですが、たとえば "echo > /dev/pty10000000000" とすると、/dev/pty0、/dev/pty1、...と作成して、死んだように倒れてしまうんですね。 展示会では楽しかったのですが、お客さんにはこんなことして欲しくないですね。

どうすれば解決するのか?

JavaScript の配列の実装方法はブラウザによって異なりますが、実際の配列を使用すると非効率になる場合は、一般に疎な実装 (ほとんどの場合、通常のオブジェクトのプロパティ アクセスに使用されるものと同じ) に戻ります。

何が密から疎への移行の引き金になるかは、特定の実装についてより詳しい人に尋ねなければなりませんが、あなたの例は完全に安全であるはずです。密な配列を取得したい場合は、明示的な長さの引数でコンストラクタを呼び出し、実際に取得できることを期待する必要があります。

参照 この回答 をご覧ください。