2

現在のwebApp用のOODシステムがあり、すべての要素にIDがあり、各ページの要素配列に配置されています。各新しい要素のIDは、elemenetが配置されているページに関係なく連続した番号です。たとえば、7ページのプロジェクトに25の要素がある場合、どのページに配置されても、新しい要素のIDは次のようになります。たとえば、IDが1と4の2つの要素を持つプロジェクトのページ1は次のようになります。

[undefined, proto.constructor, undefined, undefined, proto.constructor ]

このように要素を参照するのは非常に簡単です。必要なのは要素のページ番号とIDだけであり、たとえばpages [1].elements[1]のように要素を呼び出すことができるからです。しかし、このメソッドで私が抱えている問題は、最終的なJSONに「未定義」の要素が過剰に含まれ、JSONが不必要に大きくなりすぎることです。それを回避する方法はありますか?

4

3 に答える 3

3

配列の代わりにJSオブジェクトを使用してください。数値に見えるキー(実際には文字列ですが、配列にも当てはまります)を保持でき、同じ定数時間ルックアップの利点があります。

したがって、このようなコードの代わりに…</ p>

var objectsById = [];
objects[object.id] = object;

…代わりに、次のようなコードを記述します。

var objectsById = {};
objects[object.id] = object;

JSON出力は簡潔になります(必ずしもソートされている必要はありません)。

{ "42":"someserializablevalue", "17":"another JSON value" };
于 2012-04-17T03:21:36.000 に答える
-1

割り当ての最後または最初に「_」のような文字列を追加します

var id=2
var array['_'+id]=value

すべての要素にインデックスを付けてマッピングする代わりに、ヒット方式で、離れた場所に連想配列ob要素として割り当てられます。

于 2012-04-17T03:25:05.497 に答える
-2

空の文字列で配列メンバーを初期化してみませんか

このような:

var arr = ['','','','','','','','','',''];

またはこのように:

var arr = new Array(10);
for(i=0;i<arr.length;i++)
   arr[i]='';
于 2012-04-17T03:30:06.323 に答える