我要做的是尝试在其中创建一个包含项目数组的json并将它们放到localstorage中。下面的代码是有效的,但是当我把第一个数组放进去的时候就好了但是当插入第二个数组时它变成了第一个数组的索引,就像一个不需要的对象我希望将它们作为单独的对象保存在本地存储(详细信息是下面给出的格式的数组)。任何帮助都非常感谢。
details = [{"AmountRequested":"232323"},{"Status":"New"},{"DetailsID":"38"}]
function PutToLocalStorage(details) {
var a = [];
console.log(JSON.stringify(details));
if (localStorage.getItem("Details") === null) {
localStorage.setItem("Details", JSON.stringify(details));
}
else {
a = JSON.parse(localStorage.getItem("Details"));
console.log(a);
var detailsid = "";
for (var i = 0; i < details.length; i++) {
if (details[i].DetailsID != null) {
detailsid = details[i].DetailsID;
}
}
a.push(details);
localStorage.setItem('Details', JSON.stringify(a));}}
答案 0 :(得分:0)
如果getItem('Details')
产生null
,您当前只会将details
对象放入其中。
在else
子句中,您正在使用getItem('Details')
并将其分配给a
,我认为这意味着您希望它是一个数组,而实际上您的第一个插入是对象
在我看来,您希望始终使用a.push(details);
并存储a
,即使在第一次插入时也是如此,以便您始终使用一系列项目。
答案 1 :(得分:0)
如果要保留单独的对象,请先推送一系列详细信息。将代码修改为 -
if (localStorage.getItem("Details") === null) {
localStorage.setItem("Details", JSON.stringify([details]));
}