Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.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_Html_Local Storage - Fatal编程技术网

Javascript 最好将数组存储在localstorage或多个变量中?

Javascript 最好将数组存储在localstorage或多个变量中?,javascript,html,local-storage,Javascript,Html,Local Storage,举个例子,我有成千上万的学生 所以我有一个对象数组 students = [ { "name":"mickey", "id","1" }, { "name":"donald", "id","2" } { "name":"goofy", "id","3" } ... ]; 我当前将其保存到本地存储的方式是: localStorage.setItem('students', JSON.stringify(students)); var data = localStorage.getItem(

举个例子,我有成千上万的学生

所以我有一个对象数组

students = [

{ "name":"mickey", "id","1" },
{ "name":"donald", "id","2" }
{ "name":"goofy", "id","3" }
...

];
我当前将其保存到本地存储的方式是:

localStorage.setItem('students', JSON.stringify(students));
var data = localStorage.getItem('students');
students = JSON.parse(data);    
我从localstorage中检索它的方法是:

localStorage.setItem('students', JSON.stringify(students));
var data = localStorage.getItem('students');
students = JSON.parse(data);    
现在,每当我对一个学生进行更改时,我必须保存所有 学生们到本地存储

students[0].name = "newname";
localStorage.setItem('students', JSON.stringify(students));
我在想,与其保留一个数组,不如保留一个数组 千变万化

localStorage.setItem('student1', JSON.stringify(students[0]));
localStorage.setItem('student2', JSON.stringify(students[1]));
localStorage.setItem('student3', JSON.stringify(students[2]));
...
这样一来,一个学生就可以被单独保存,而不用保存其余的

我可能会有很多“学生”。。几千。那么哪种方式比较好,, 数组还是本地存储中的许多变量


注意:我知道我可能应该使用IndexedDB,但我现在需要使用LocalStorage。谢谢

本地存储的大小有限制,较旧的浏览器不支持

出于以下几个原因,最好存储在阵列中:

  • 可以使用循环来处理它们
  • 不需要JSON
  • 总是可以成长的

对于您的特定情况,可能更容易将学员存储在一个localStorage键中,并使用JSON解析来重建您的对象,添加到其中,然后再次对其进行字符串化,这比每个学员将其拆分为不同的键要容易


如果您没有太多的数据层,真的需要一个真正的本地数据库,比如IndexedDB,那么一个键和一个JSON字符串值就可以了

你知道LocalStorage并不是真正持久的,对吧?LocalStorage是持久的,sessionStorage是持久的not@foreyez为什么每次更改时都将数据保存在本地存储中?最好在window中执行此操作。onclose eventlocalStorage是持久的(只要用户未清除)—但没错,除非使用不同的键,否则每次都必须重新保存。如果您以您想要的方式使用不同的键,那么最好使用索引数据库。或者,您必须按照示例student1、student2等中给出的方式使用不同的键。这意味着您可能仍然需要一个名为students的键,该键在添加新键时始终使用student1、student2等进行更新,在删除一个键时将其删除。当您需要db类型的功能时,如果没有db,就会变得毛茸茸的。@kirugan是的,直到用户决定清除缓存为止:PAnd在页面刷新之间,他将如何保存缓存?他已经将数据存储在一个数组中,并将其保存到localStorage以供持久性使用。每当发生任何更改时,他都会修改本地存储。他只需要在页面刷新期间同步。