好的,我已经尝试过这里的示例了,我知道可能有一些不同的方法在localstorage中向数组添加对象而不是覆盖它但是我没有找到至少其中一个。
获得此代码将对象存储在数组中,但它会覆盖自身。愿有人告诉我我错过了什么吗? (而且我担心我可能会失踪很多)。
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));
};
答案 0 :(得分:25)
使用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));
};
以下是展示上述内容的fiddle。
答案 1 :(得分:8)
也许您只需要在推送新条目之前获取条目:
var allEntries = JSON.parse(localStorage.getItem("allEntries")) || [];
allEntries.push(entry);
//etc...
答案 2 :(得分: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);
答案 3 :(得分:0)
HTML5 localStorage允许您存储键/值对数据。 键和值都必须是字符串。要将数组存储为键或值,您需要将数组编码为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);
答案 4 :(得分:0)
将对象添加到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));