【问题标题】:Accessing and storing data sets in javascript在 javascript 中访问和存储数据集
【发布时间】:2011-12-20 15:10:14
【问题描述】:

我正在尝试找出在 javascript 中存储和访问数据的最佳方式。

我想选择与以前未知值的“标识符”关联的数据,或者添加具有新随机“标识符”的新数据集。

我是用数组还是对象来做这个?

数组存储

{
"data": [
    {
        "key1": "identfifier1",
        "key2": "value2",
        "key3": "value3"
    },
    {
        "key1": "identfifier2",
        "key2": "value2",
        "key3": "value3"
    }
]
}
  • 数组在 js 中保持有序。这对我来说很重要,因为我想在屏幕上显示它的数据。
  • 与“标识符”相关的更复杂的数据集选择(需要某种循环或包含辅助方法,例如 data. contains("identifier").key2)

对象存储

{
"data": {
    "identfifier1": {
        "key1": "value1",
        "key2": "value2",
        "key3": "value3"
    },
    "identfifier2": {
        "key1": "value1",
        "key2": "value2",
        "key3": "value3"
    }
}
}
  • 对象在 js 中不会保持有序,但这对我来说很重要,因为它的数据要显示在屏幕上(我必须在每次输出数据之前对整个对象进行排序)
  • 轻松快速地选择与“标识符”相关的数据(例如,只需执行 identfifier1.key2,无需循环或辅助方法来搜索包含“标识符”的数据集)

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

【问题讨论】:

  • 这些数据来自哪里?服务器端?
  • 是的,来自服务器,一些用户会操纵一些,可能会添加或删除并将其发回。都将在 JSON 中。

标签: javascript arrays object data-structures storage


【解决方案1】:

使用 JSON(您的第二种方法)。它是为此目的而设计的,并且有许多本机函数和其他库来支持您的工作。与它一起使用数据库(例如 CouchDB 或 MongoDB)将很容易,而无需转换对象。

【讨论】:

    【解决方案2】:

    如果您执行的读取操作多于写入操作,那么最好使用该对象并保留一个单独的对象键数组,以便在需要时对其进行排序。

    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]] );
    }
    

    或者您可以仅在绝对需要时才进行排序,这样即使写入也会提高性能。

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

    【讨论】:

      猜你喜欢
      • 2011-05-26
      • 2012-03-07
      • 2020-12-05
      • 2017-10-12
      • 2012-03-08
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      相关资源
      最近更新 更多