而不是数组:
var arrayExample = {
"lotsOfStuff" : [
{"id" : "th1", "name" : "thing1", "type": "thing", "moo":"a"},
{"id" : "th2", "name" : "thing2", "type": "thing", "moo":"z"},
{"id" : "th3", "name" : "aDifferentThing3", "type": "differentThing", "moo":"m"}
]
}
使用大量属性:
var propertyExample = {
"lotsOfStuff" : {
"id1" : {"name" : "thing1", "type" : "thing", "moo" : "a" },
"id2" : {"name" : "thing2", "type" : "thing", "moo" : "z" },
"id3" : {"name" : "aDifferentThing3", "type" : "differentThing", "moo" : "m" }
}
}
仍然可以遍历它们
for(var idx in arrayExample.lotsOfStuff) {
var thing = lotsOfStuff[idx];
var id = thing.id;
...
}
和
for(var id in propertyExample) {
var thing = lotsOfStuff[id];
...
}
但是您可以通过ID查找,但代价是按索引位置查找
使用此阵列替代方案有任何问题吗? 那么有很多元素的表现呢?
答案 0 :(得分:1)
如果元素的顺序很重要,请使用数组。
如果您需要按ID查找,请使用对象。
如果您需要同时执行这两项操作,请同时创建一个数组和一个对象,其元素指向相同的对象。
访问对象属性可能比访问数组元素要慢,因为它需要散列而不是简单的索引。但是如果需要在数组中按ID查找,则需要线性搜索,如果有很多元素,则比散列慢得多。对象的性能不应受元素数量的显着影响。