将从本地存储返回的JSON数组分配给JavaScript数组

时间:2015-01-13 14:25:54

标签: javascript arrays json local-storage

我在localStorage中存储一个对象数组,每次都要重新对象,附加新对象并再次存储。

只有在localStorage中已有条目时,代码才能正常工作 以下是代码:

var companies=[];

companies=JSON.parse(localStorage.getItem("companies")); //IMP line

companies.push(company);
localStorage.setItem("companies", JSON.stringify(companies));

当我评论' IMP行'第一次,以便用单个记录插入记录。一旦本地存储包含关键"公司"一切都很顺利。

请建议第一次插入阵列时可以检查的条件。 谢谢。

2 个答案:

答案 0 :(得分:5)

您需要检查:

var strCompanies = localStorage.getItem("companies")
var companies = strCompanies ? JSON.parse(strCompanies) : [];

答案 1 :(得分:1)

如果找不到任何内容,

localStorage.getItem将返回null,JSON.parse(null)也是如此。所以你最终以companies为空。

试试这个:

var companies=[];

if (localStorage.getItem("companies"))
    companies=JSON.parse(localStorage.getItem("companies")); //IMP line

companies.push(company);

localStorage.setItem("companies", JSON.stringify(companies));

请参阅MDN