将列表添加到本地存储的列表数组中

6

我有一个学生名单,格式如下,是从用户输入的表格中获取的:

 //student form input for 1st time
 var student={name:"a",roll:"9",age:13}
 //student form input for 2nd time
 var student={name:"b",roll:"10",age:14}
 //student form input for 3rd time
 var student={name:"c",roll:"11",age:15}

实际上,我正在开发 PhoneGap 应用程序。每次用户提交表单输入,即学生信息时,我希望将其保存到本地存储中。最后,在联网时,我想同步它们。我知道可以按照以下方式将它们存储在本地存储中:

 localStorage.setItem("studentinfo", JSON.Stringfy(student));

但是,当我保存第二个学生的信息时,这将删除本地存储中的第一个学生信息。

实际上,当我分别保存第一、第二和第三个输入时,我希望将它们添加到本地存储数组中,最终本地存储中的结果应该像这样

key=studentlist,
value=[
       {name:"a",roll:"9",age:13},  
       {name:"b",roll:"10",age:14},
       {name:"c",roll:"11",age:15}
    ]

如何在本地存储或PhoneGap本地存储中完成此操作?


你应该将包含所有学生的JSON对象进行字符串化,而不是逐个字符串化每个学生。在第二种情况下,你正在覆盖本地存储键“studentinfo”。本地存储仅使用字符串(键:值)工作。你也可以为每个学生创建一个新的键,但是你必须编写相应的逻辑,为每个学生设置唯一的键。 - A. Wolff
1个回答

17
你想要将所有学生存储在一个数组中,就像这样:
var students = [];
students.push({name:"a",roll:"9",age:13});
students.push({name:"b",roll:"10",age:14});
students.push({name:"c",roll:"11",age:15});

然后将其存储在localStorage中:

localStorage.setItem('studentsInfo', JSON.stringify(students));

最好的方法是使用以下类似的函数来实现:
// When you get more student information, you should:
var addNewStudent = function (name, roll, age) {
    // retrieve it (Or create a blank array if there isn't any info saved yet),
    var students = JSON.parse(localStorage.getItem('studentsInfo')) || [];
    // add to it,
    students.push({name: name, roll: roll, age: age});
    // then put it back.
    localStorage.setItem('studentsInfo', JSON.stringify(students));
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接