在javascript中访问和存储数据集

在javascript中访问和存储数据集,javascript,arrays,object,data-structures,storage,Javascript,Arrays,Object,Data Structures,Storage,我试图找出用javascript存储和访问数据的最佳方式 我想选择与之前未知的“标识符”相关联的数据,或者使用新的随机“标识符”添加新的数据集 我是使用数组还是对象来执行此操作 阵列存储 数组在js中保持有序。这对我来说很重要,因为我想在屏幕上显示它的数据 与“标识符”关联的数据集的更复杂选择(需要某种循环或包含辅助方法,例如data.containing(“identifier”).key2) 对象存储 对象在js中不保持有序,但这对我来说很重要,因为它的数据会显示在屏幕上(我必须在每次

我试图找出用javascript存储和访问数据的最佳方式

我想选择与之前未知的“标识符”相关联的数据,或者使用新的随机“标识符”添加新的数据集

我是使用数组还是对象来执行此操作

阵列存储
  • 数组在js中保持有序。这对我来说很重要,因为我想在屏幕上显示它的数据
  • 与“标识符”关联的数据集的更复杂选择(需要某种循环或包含辅助方法,例如data.containing(“identifier”).key2)
对象存储
  • 对象在js中不保持有序,但这对我来说很重要,因为它的数据会显示在屏幕上(我必须在每次输出数据之前对整个对象进行排序)
  • 轻松快速地选择与“标识符”关联的数据(只需执行identifier1.key2以获取expample,无需使用循环或辅助方法来搜索包含“标识符”的数据集)

有什么想法,方法,最好的方法吗?一种方法比另一种更好?

使用JSON(第二种方法)。它就是为了达到这个目的,有许多本机函数和附加库来支持您的工作。使用数据库(例如CouchDB或MongoDB)将很容易,而不必转换对象。

如果读操作多于写操作,则最好使用对象并保留一个单独的对象键数组,以便在需要时进行排序

data = {
    identfifier1 : { key1: value1,
            key2: value2,
            key3: value3
          },
    identfifier2 : { key1: value1,
            key2: value2,
            key3: value3
          }
}
当您添加新密钥时:

data.identifier3 = ...
更新订单:

var sorted = Object.keys( data ).sort();
要按顺序进行迭代,请执行以下操作:

for( var l = sorted.length, i = 0; i < l; ++i ) {
     alert( data[sorted[i]] );
}
for(var l=sorted.length,i=0;i
或者,您可以仅在绝对需要时进行排序,这样即使是写入也会更高效


您可以为所有这些创建一个包装器“类”,以便快速读取并仅在需要时进行排序。

这些数据来自哪里?服务器端?是的,从服务器端,一些用户会操作一些,可能会添加或删除并发送回。所有内容都将使用JSON。
data = {
    identfifier1 : { key1: value1,
            key2: value2,
            key3: value3
          },
    identfifier2 : { key1: value1,
            key2: value2,
            key3: value3
          }
}
for( var l = sorted.length, i = 0; i < l; ++i ) {
     alert( data[sorted[i]] );
}