Javascript三维数组与对象文字

Javascript three dimensional arrays vs Object literal

本文关键字:对象 文字 数组 三维 Javascript      更新时间:2023-09-26

以下两种方案中哪一种表现更好,并且感觉更自然:

  1. 使用对象文本:

    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]
    }
    
  2. 使用二维数组(在二维上具有唯一的第一元素)

    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])以向其推送更多元素。当然,我需要通过字符串键来做。

所以我想它有两部分,添加元素并迭代它们。

在这种情况下,

数组会稍微快一些,但不会在任何明显的程度上,迭代它们中的每一个本质上是相同的。

数组迭代

for(var i in array){//i is the index of the array
  keyName = array[i][0];
  arrayOfValues = array[i][1];
}

对象迭代

for(var i in object){//i is the keyname
  key = i;
  arrayOfValues = object[i];
}

但是,如果您使用 keyid 查找并附加到内部数组,我会使用该对象。

在数组中按键 ID 查找

var keyId = "key123456";
var arrayOfValues=null;
for(var i in array){
  if(array[i][0] == keyId){
    arrayOfValues = array[i][1];
    break;
  }
}

在对象中按键 ID 查找

var keyId = "key123456"
var arrayOfValues = object[keyId]

最好

使用对象文字,因为您不需要初始化更多数组,因此性能可能会更好,但这取决于您做事的方式。

如果要声明数组,则可以声明同一数组中的所有元素,其中

声明自身名称的元素位于该数组中,因此跳过第一个索引(0)来迭代数组。想法:

var array = [
    ['key1', 1, 2, 3, 4, 9],
    ['key2', 1, 2, 3, 4, 9],
    ['key3', 1, 2, 3, 4, 9],
    ['keyn', 1, 2, 3, 4, 9]
];
for(var i = 0, el; el = array[i]; i ++) {
    for(var b = 1, len = el.length; b < len; b ++) {
        console.log(el[b]);
    }
}

我认为这几乎与声明对象相同,但是数组除了具有Object构造函数外,它们还具有Array构造函数,然后我"相信"对于性能来说,它比声明对象文字要慢得多。