2

我当前的 webApp 有一个 OOD 系统,每个元素都有一个 id 并放置在每个页面的元素数组中。每个新元素的 id 是一个连续的数字,无论元素放置在哪个页面上,例如,如果我们在一个有 7 个页面的项目中有 25 个元素,那么新元素的 ID 无论放置在哪个页面都会是 26。例如,一个项目的第一页有 2 个元素,ID 为 1 和 4 将是:

[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

以 hits 方式而不是索引和映射所有元素, away 将被分配为关联数组 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 回答