对象数组与嵌套对象?

时间:2014-07-22 08:57:01

标签: javascript arrays object

我有一个非常基本的编程问题,我希望你能说清楚。

我现在正在处理很多对象,我想知道在对象数组内或嵌套对象内搜索内容是否更好?

例如,我可以通过以下两种方式存储相同的数据样本:

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来获取该特定值。

推荐的做事方式是哪种?我将使用相当大的数据集,因此,选项会有更好的性能吗?

2 个答案:

答案 0 :(得分:4)

这是一个没有错误答案的问题。两种情况都足够好。取决于案例。你应该考虑语义。您是返回元素数组(即用户列表等)还是只返回具有大量属性的对象?我想这个结构应该依赖于数据。 但请记住,属性object.property的访问速度比array[index]快。

答案 1 :(得分:1)

了解对象与阵列以及何时使用它们

  • 什么是对象?它们与Javascript中的数组有什么不同?
  • 什么时候使用一个比另一个好?

<强>阵列: 数组带有几个非常有用的本机方法。我们可以使用push()向现有数组实例添加一个新元素,并通过pop()从数组中删除最后一个元素。我们还可以使用splice()删除n个元素和/或在索引i处插入新元素。

<强>对象: 将对象视为关联数组,即密钥列表 - &gt;价值对。 这些键称为对象属性。

检查属性或值是否存在

<强>阵列: 通常,当我们使用数组时,我们更少关注索引,而更关心值。 我们使用Arrays执行的常见操作之一是检查数组中是否存在某个值。 这可以使用indexOf()方法轻松完成。

<强>对象: 与Arrays相比,我们通常想知道Object是否包含某个属性。通常我们会编写一个以Object作为参数的函数,并期望它包含一组特定的属性。这个Object可以来自API或其他一些代码,我们不应该依赖它拥有我们期望的所有属性。在访问该属性后面的值之前,最好检查属性是否存在。对象附带hasOwnProperty()方法,它允许我们这样做。

extracted from here