0

どちらが速いか:配列またはオブジェクトを反復処理します。そして、間にある要素を削除するなどのアクションを実行する必要がある場合はどうなりますか?

var a = {"A1":1, "B1":2, "C1":3};

また

var a = ["A1", "B1", "C1"];
4

3 に答える 3

5

配列の反復は、オブジェクトの反復よりも高速である必要がありますが、次の条件によって異なります。

  1. オブジェクト/配列のサイズ
  2. キーが連続しているかどうか
  3. あらゆる種類の他のオプティマイザがらくた

古いブラウザーでは、配列から要素を削除するのは非常にコストがかかりました (後続のすべての要素のキーを変更する必要があるため) が、最新のブラウザーではそれほど問題になりません。

真剣に、プロジェクトに最適な表現を使用してください。問題が発生した場合は、後で最適化について心配してください。

于 2012-12-11T16:26:35.063 に答える
3

配列またはオブジェクトを反復処理するのはどちらが高速ですか?

配列はより効率的に格納される可能性があり、そのインデックスも予測可能です (ルックアップは不要です)。高速になるはずですが、小さなセットでは違いに気付かないでしょう。

間にある要素を削除するなどのアクションを実行する必要がある場合はどうなりますか?

オブジェクトを使えば簡単です。あなたはただ電話するだけdelete a.A1;です。それはO(1)操作です。

を使用して配列を使用するa.splice(1,1);と、すべてのアイテムの名前を変更する必要があり、頻繁に発生する場合はかなり遅くなります ( O(n))。

于 2012-12-11T16:25:40.730 に答える
1

一方が他方より速くも遅くもありません。プロジェクトに最も適したものを使用してください。

削除については、配列の場合はspliceを、オブジェクトの場合は を試してくださいdelete

于 2012-12-11T16:23:29.303 に答える