使用具有许多属性而不是数组的json对象

时间:2014-10-03 02:12:18

标签: arrays json properties

而不是数组:

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查找,但代价是按索引位置查找

使用此阵列替代方案有任何问题吗? 那么有很多元素的表现呢?

1 个答案:

答案 0 :(得分:1)

如果元素的顺序很重要,请使用数组。

如果您需要按ID查找,请使用对象。

如果您需要同时执行这两项操作,请同时创建一个数组和一个对象,其元素指向相同的对象。

访问对象属性可能比访问数组元素要慢,因为它需要散列而不是简单的索引。但是如果需要在数组中按ID查找,则需要线性搜索,如果有很多元素,则比散列慢得多。对象的性能不应受元素数量的显着影响。