我有一个针对当前webApp的OOD系统,每个元素都有一个id,并放在每个页面的elements数组中。无论elemenet放置在哪个页面,每个新元素的id都是一个连续的数字,例如,如果我们在一个有7页的项目中有25个元素,那么无论它放在哪个页面,新元素的ID都将是26岁。 因此,例如,其中包含ID为1和4的2个元素的项目的第1页将是:
[undefined, proto.constructor, undefined, undefined, proto.constructor ]
通过这种方式重新构造元素非常容易,因为我需要的只是元素的页码和ID,我可以调用元素,例如pages [1] .elements [1]。但是我对这个方法的问题在于它导致最终JSON中过多的“未定义”元素,这使得JSON不必要地过大。有没有办法解决这个问题?
答案 0 :(得分:3)
使用JS对象而不是数组。它仍然可以有数字键(它们实际上是字符串,但对于数组也是如此)并且具有相同的恒定时间查找优势。
所以,而不是像这样的代码......
var objectsById = [];
objects[object.id] = object;
...而是像这样编写代码:
var objectsById = {};
objects[object.id] = object;
JSON输出将是简洁的(虽然不一定排序):
{ "42":"someserializablevalue", "17":"another JSON value" };
答案 1 :(得分:-1)
在分配的结尾或开头添加类似'_'的字符串
var id=2
var array['_'+id]=value
以命中方式而不是索引和映射所有元素,将被分配为关联数组ob元素
答案 2 :(得分:-2)
为什么不用空字符串初始化数组成员
像这样:var arr = ['','','','','','','','','',''];
或者像这样:
var arr = new Array(10);
for(i=0;i<arr.length;i++)
arr[i]='';