5

int(s)を(s)にマップするJavascript(ハッシュマップなど)の高性能マップが必要stringです。マップは、domの準備ができた後、Webページのいくつかのセクションを構築するために使用されます。単純なJavaScriptオブジェクトもマップのように機能することは知っていますが、最高のパフォーマンスで作業する必要があります。

サーバーから応答ページを生成しながら、Webページに文字列を追加して、すべてのデータペアでマップを一度に初期化したいと思います。

int-stringペアのjavascriptマップのパフォーマンスを改善する方法はありますか、それとも同じものの実装はありますか?

-

jQuery1.7の使用

4

3 に答える 3

10

わかりました、それは答えの方が多いので、ここに投稿します:

配列を使用します。どの実装でもjsプリミティブとオブジェクトを使用する必要があることを考慮すると、それよりもパフォーマンスの高いものを見つけるのは難しいでしょう。

javascriptのほとんど(すべて?)の実装の配列はスパースである可能性があります。したがって、array.lengthは、最後の要素+ 1のインデックスを返しますが、まばらな場合、配列にはすべての要素が割り当てられておらず、オブジェクトプロパティのセマンティクスを使用してその要素にアクセスします(つまり、実質的にintをキーとして持つハッシュテーブルです)。

それは基本的にあなたが探している振る舞いをあなたに与えます。

負のintの場合は、2番目の配列を使用します。

単一ステートメントの初期化に関連して:アイテムインデックスを暗黙的に知っていることに基づいているため、一般的には実行できません。

あなたができることは、線に沿って何かを追加することです:

 var arr = [];

 arr[int1] = val1;
 arr[int2] = val2;
 arr[int3] = val3;
 arr[int4] = val4;
 ...
 arr[intn] = valn;

とにかく(Number、String)ペアをリストする必要があるということです。

于 2012-10-25T16:22:47.640 に答える
0

このjperfテストケースをチェックして、結論を導き出してください。オブジェクトもまばらです。配列は、とりわけ独自の長さを説明する単なる特殊なオブジェクトです。

于 2015-09-09T20:01:10.410 に答える
-1

私はあなたが以下を使うべきだと思います var l_map = {};

要素を追加するには l_map[<your integer>] = <your string>

取得するには var l_value = l_map[<your integer>];

これは、問題を解決する1つの方法です。

2番目の方法は、次のように位置に基づいて値を格納するため、配列(またはリスト)を使用するだけで非常に簡単です。 var l_array = [];

最後の使用時l_array.push(<your string>); に要素を追加するには:指定された位置に要素を追加するには:l_array.splice(<position>,0,<your string>);

使用を取得するには:l_array[<posit>];

于 2012-10-25T10:15:58.150 に答える