Javascript 对象数组与嵌套对象?
我有一个非常基本的编程问题,我希望你能解释一下 我现在正在处理很多对象,我想知道搜索对象数组中的内容还是嵌套对象中的内容更好 例如,我可以通过以下两种方式存储相同的数据样本:Javascript 对象数组与嵌套对象?,javascript,arrays,object,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: "v
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"},
.....
]
及
现在的要求是从子对象获取特定属性。我们只知道与之相关联的id(而不是索引)
如果要使用数组方法,则必须使用循环和数组过滤器来访问各个对象中的任何内容/值。这个方法看起来相当麻烦,遍历每个子对象对我来说效率很低。然而,每当我看到有经验的程序员正在实现类似的数据示例时,它们似乎都在大量使用数组
如果我要使用嵌套对象方法,我所要做的就是调用data2.id\u 2.key2
来获取特定的值
推荐的做事方式是什么?我将使用相当大的数据集,因此,option将具有更好的性能?这是一个没有错误答案的问题。这两种情况都很好。视情况而定。你应该考虑一下语义。您是返回元素数组(即用户列表等)还是只返回包含大量属性的对象?我想这种结构应该取决于数据。 但是请记住,通过property
object.property
进行访问比通过array[index]
了解对象和数组以及何时使用它们要快
- 什么是对象,它们与Javascript中的数组有什么不同
- 什么时候使用一个比另一个有利
当然,通过属性键访问要快得多。但是对代码进行基准测试很容易,你应该这样做。如果你需要对这些数据进行排序,你应该使用数组。否则,如果您需要访问单个项目,并且您拥有密钥而不需要在结构中搜索它,则使用object Way,然后使用哈希。结构如此之小,任何性能差异都可能微不足道。
data2.id2.key2
会因您发布的对象而失败(顺便说一句;)为了公平起见,您可以执行data1[1].key2
,然后呢?这是一个真正的问题,也就是说,我不是说这就是解决方案;)谢谢在这种情况下,我似乎应该使用object.property。我现在不会将你的答案标记为最终答案,以防其他人想参与进来。我还应该注意到,大约90%的情况下,使用哪种结构并不重要(从性能角度来看),因为任何应用程序中都有很多其他位置,只要将访问类型更改为属性,就可以有效地提高性能。有趣的是,我猜它们的速度一样快。有消息来源支持吗?@EmilLundberg你可以在jsperf.com上做一个小测试并检查一下。
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"},
.....
}