【发布时间】:2014-09-13 00:20:31
【问题描述】:
我有一个非常基本的编程问题,希望您能解释一下。
我现在正在处理很多对象,我想知道是在对象数组中还是在嵌套对象中搜索内容更好?
例如,我可以通过以下两种方式存储相同的数据样本:
data1 = [
{ "id":1, "key1: "value1", "key2:"value2"},
{ "id":2, "key1: "value1", "key2:"value2"},
{ "id":3, "key1: "value1", "key2:"value2"},
{ "id":4, "key1: "value1", "key2:"value2"},
.....
]
和
data2 = {
"id_1": { "key1: "value1", "key2:"value2"},
"id_2": { "key1: "value1", "key2:"value2"},
"id_3": { "key1: "value1", "key2:"value2"},
"id_4": { "key1: "value1", "key2:"value2"},
.....
}
现在的要求是从子对象中获取某个属性。我们只知道与之关联的 id(而不是索引)。
如果我要使用数组方法,我将不得不使用循环和数组过滤器来访问各个对象中的任何内容/值。这种方法似乎相当麻烦,并且遍历每个子对象对我来说效率很低。然而,每当我看到有经验的程序员正在实现类似的数据样本时,他们似乎都大量使用数组。
如果我要使用嵌套对象方法,我所要做的就是调用data2.id_2.key2 来获取该特定值。
推荐的做事方式是什么?我将使用相当大的数据集,所以选项会有更好的性能?
【问题讨论】:
-
当然通过属性键访问要快得多。但是对你的代码进行基准测试很容易,你应该这样做。
-
如果你需要对这些数据进行排序,你应该使用数组。否则,使用对象方式
-
如果您需要访问单个项目并且您拥有密钥而无需在结构中搜索它,则使用散列。这么小的结构,任何性能差异都可能是微不足道的。
-
data2.id2.key2会因您发布的对象而失败 btw ;) 为了公平起见,您可以使用data1[1].key2。 -
那么using both at the same time 呢?这是一个真正的问题,也就是说,我并不是说这是解决方案;)
标签: javascript arrays object