Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 任意大小的数组是否应该存储在localStorage中的单个键下?_Javascript_Local Storage - Fatal编程技术网

Javascript 任意大小的数组是否应该存储在localStorage中的单个键下?

Javascript 任意大小的数组是否应该存储在localStorage中的单个键下?,javascript,local-storage,Javascript,Local Storage,我想使用localStorage在客户机上持久化一个类似类型的数据列表。每个数据段都是一个高分和关于游戏会话的其他信息。这里不需要通过密钥访问;我更可能迭代列表并显示完整列表或部分列表 看起来我有两个选择: 以某种方式将整个数组串起来,并将它们存储在同一个键下(可能是“gamedata”或类似的东西) 将每条数据存储在单独的键下(可能使用时间戳) 以下是每种选择的缺点: 向列表中添加一项(最常见的操作)需要读取整个列表,添加该项,然后将数据写回localStorage。我预计列表中会有大约100

我想使用localStorage在客户机上持久化一个类似类型的数据列表。每个数据段都是一个高分和关于游戏会话的其他信息。这里不需要通过密钥访问;我更可能迭代列表并显示完整列表或部分列表

看起来我有两个选择:

  • 以某种方式将整个数组串起来,并将它们存储在同一个键下(可能是“gamedata”或类似的东西)

  • 将每条数据存储在单独的键下(可能使用时间戳)

  • 以下是每种选择的缺点:

  • 向列表中添加一项(最常见的操作)需要读取整个列表,添加该项,然后将数据写回localStorage。我预计列表中会有大约100个项目,但可能会有一些异常值更频繁地玩游戏,我不希望它落后于它们。如果用户在写入localStorage时关闭页面或关闭计算机,数据可能会损坏,从而丢失所有游戏数据。把整件事读一遍,然后把大部分内容原封不动地写回去,这感觉也不太对

  • 我必须迭代整个localStorage以查找所有数据。感觉不太适合使用关联数组。此外,由于密钥的存储,这种方法在存储空间方面可能效率较低


  • 哪种方法是存储数据的首选方法?

    我的直觉告诉我,第一种方法会更快/更容易,但很难说。你可能会得到很多基于意见的答案,但你可以使用一种工具,比如尝试评估一个答案是否真的更快/更有效。我知道速度不是唯一的考虑,但它可能是有用的/有用的度量。这里要考虑的另一件事是一个选项卡从本地存储中读取的竞争条件,第二个选项卡修改本地存储,然后第一个选项卡修改现在(过时的)数组,并再次保存它。这可能不是一个现实的问题,但值得思考。@JosiahDaniels我没有想到这一点!但对于一个普通用户,我不明白为什么他会在多个标签上同时玩我的游戏。