17

好的,我已经尝试过这里的示例,我知道可能有几种不同的方法可以将对象添加到本地存储中的数组而不是覆盖它,但我至少找不到其中一个。

得到此代码以将对象存储在数组中,但它会覆盖自身。谁能告诉我我错过了什么?(而且我担心我可能会错过很多)。

function addEntry() {
    var entryTitle = document.getElementById("entryTitle").value;
    var entryText = document.getElementById("entryText").value;
    var entry = {
        "title": entryTitle,
        "text": entryText
    };
    localStorage.setItem("entry", JSON.stringify(entry));
    var allEntries = [];
    allEntries.push(entry);
    localStorage.setItem("allEntries", JSON.stringify(allEntries));
};
4

5 回答 5

43

当您使用setItem它时,它会覆盖它之前的项目。您需要用于getItem检索旧列表,附加到它,然后将其保存回 localStorage:

function addEntry() {
    // Parse any JSON previously stored in allEntries
    var existingEntries = JSON.parse(localStorage.getItem("allEntries"));
    if(existingEntries == null) existingEntries = [];
    var entryTitle = document.getElementById("entryTitle").value;
    var entryText = document.getElementById("entryText").value;
    var entry = {
        "title": entryTitle,
        "text": entryText
    };
    localStorage.setItem("entry", JSON.stringify(entry));
    // Save allEntries back to local storage
    existingEntries.push(entry);
    localStorage.setItem("allEntries", JSON.stringify(existingEntries));
};

这是一个演示上述内容的小提琴。

于 2013-10-28T12:47:55.953 回答
11

也许您只需要在推送新条目之前获取条目:

var allEntries = JSON.parse(localStorage.getItem("allEntries")) || [];
allEntries.push(entry); 
//etc...
于 2013-10-28T12:48:10.960 回答
2

将对象添加到 localStorage (Ionic) 中的数组:

var existingEntries = JSON.parse(localStorage.getItem("allEntries"));
if(existingEntries == null) existingEntries = [];
var testObject ={username:this.username, 
mobile:this.mobile,
email:this.email,
type:this.type,
password:this.password};

localStorage.setItem('testObject', JSON.stringify(testObject));
existingEntries.push(testObject);
localStorage.setItem("allEntries", JSON.stringify(existingEntries));
于 2019-05-03T11:18:15.777 回答
0

HTML5 localStorage 允许您存储数据的键/值对。key 和 value 都必须是 string。要将数组存储为键或值,您需要将数组编码为 JSON 字符串。在检索时,您需要将其解码回数组。

const object = {
name: 'ayyan',
age: 29,
number: 03070084689,
};
const arr = JSON.parse(localstorage.getItem('key_name')) || [];
const data = [arr, ...[object]];
localstorage.setitem(json.strigify('key', data);
于 2019-03-13T10:35:00.780 回答
0

const object = {
name: 'ayyan',
age: 29,
number: 03070084689,
};
const arr = JSON.parse(localstorage.getItem('key_name')) || [];
arr.push(object);
localstorage.setitem(json.strigify('key_name', arr);

于 2019-03-13T10:09:58.327 回答