私のサイトでいくつかのテストを実行している間、私はそれに10文字列しか含まない配列で終わったが、非常に高いインデックス(600 000 000)を持つ配列で終わった。Javascript:indexOfスパース配列にもかかわらず高インデックスでは遅いですか?
この配列でindexOfを実行するのは非常に遅く、呼び出しごとにタブ全体が数秒間フリーズします。
これについての情報を探したところ、現代のJavascript実装ではまばらな配列が使用されているため、問題ではないと言われていました。私は最新のChrome 62を使用しています。
問題は実際には開発者用ツールのコンソールで再現可能です。次のコードで実行しようとした場合:
test = [];
test[600000000] = "test";
test.indexOf("test");
をあなたはJavascriptが0から6億にすべてのインデックスをループではなく、一つの要素に直接スキップされていることを示す、コンソールがインデックスを返すために数秒を要していることがわかります。これは正常な動作ですか?
はい、それはこれが助けhttps://stackoverflow.comかもしれJavaScriptが – moon
をどのように動作するかです/ questions/8668174/indexof-object-array-object-array – moon
この関数は、すべての単一インデックスを調査する必要があります。 JavaScriptランタイムがこのような状況に対処するときは、将来的には時間がかかるかもしれませんが、現在はありません。 – Pointy