【发布时间】:2016-11-08 22:04:57
【问题描述】:
以下两种场景中哪一种表现更好,对语言来说感觉更自然:
-
使用对象字面量:
var object = { 'key1': [e1, e2, e3, e4, .., en], 'key2': [e1, e2, e3, e4, .., en], 'key3': [e1, e2, e3, e4, .., en], ..., 'keyn': [e1, e2, e3, e4, .., en] } -
使用二维数组(第二维具有唯一的第一个元素)
var array = [ ['key1', [e1, e2, e3, e4, .., en], ['key2', [e1, e2, e3, e4, .., en], ['key3', [e1, e2, e3, e4, .., en], ..., ['keyn', [e1, e2, e3, e4, .., en] ];
如果数据结构的主要目的是对 key1、key2、key3、..、keyn 进行纯迭代,并对每个 e1、e2、e3、..、en 执行一些操作。
注意:不确定是否相关,但在初始化期间未按原样定义这两个结构。 object[key] = [e1, ..]; 和 array.push([key, [e1, ..]); 在需要迭代和处理之前在整个系统中使用。
编辑:
在整个应用程序中,我需要访问数组 ([e1, e2, .., en]) 以向其推送更多元素。当然,我需要使用字符串键。
所以我猜它有 2 个部分,添加元素并迭代它们。
【问题讨论】:
-
问题是您是否需要通过字符串键访问元素。数组和哈希表对于不同的任务具有不同的算法复杂性,一般来说,它并不比另一个“更快”或“更自然”。根据您的描述,我会使用数组。
-
对于已知键的性能明智,我会采用对象版本。如果您需要遍历所有元素,则采用数组版本。
-
@NinaScholz 他们直接表示“数据结构的主要目的是对key1、key2、key3、..、keyn进行纯迭代,并对每个e1、e2、e3、 ..,英文。”。所以他们可能想要使用数组版本,但它们之间的差异很小。这个问题更多地基于意见。
-
所以如果选择数组版本,则
key1...n将成为索引,所以一个简单的二维数组就足够了。 -
根据您的更新,您需要使用具有数组的对象。
标签: javascript arrays performance multidimensional-array javascript-objects