如何 add/append 到 javascript 中的现有 Web 存储?
How to add/append to existing Web storage in javascript?
我正在尝试 add/append 到 new/existing localStorage 使用此代码:
function add(){
var name = document.getElementById("name").value;
var ort = document.getElementById("ort").value;
var user = {"name":name, "ort":ort};
var exist = [];
var tmp = (JSON.parse(localStorage.getItem("users")));
if(tmp)
exist.push(tmp);
exist.push(user);
localStorage.setItem("users",JSON.stringify(exist));
console.log(JSON.parse(localStorage.getItem("users")));
var obj = JSON.parse(localStorage.getItem("users"));
for(var i=0; i<obj.length; i++) {
console.log('key: ' + i + '\n' + 'value: ' + obj[i]);
}
}
查看 Chrome 开发人员工具 localStorage 如下所示:
[[{"name":"a","city":"a"}],{"name":"b","city":"b"}]
但我想要的是:
[{"name":"a","city":"a"},{"name":"b","city":"b"}]
我做错了什么?
感谢任何帮助,
此致,
localStorage
只存储 strings
。您需要 stringify
您的 exist
然后保存到 storage
localStorage.setItem("users",JSON.stringify(exist));
要检索它,请使用 JSON.parse
var exist = JSON.parse(localStorage.exist); //Even for users object do the same
更新
要仅将数组 tmp
内的对象推送到 exist
,请使用 map()
:
tmp.map(function(item){
exist.push(item);
})
我正在尝试 add/append 到 new/existing localStorage 使用此代码:
function add(){
var name = document.getElementById("name").value;
var ort = document.getElementById("ort").value;
var user = {"name":name, "ort":ort};
var exist = [];
var tmp = (JSON.parse(localStorage.getItem("users")));
if(tmp)
exist.push(tmp);
exist.push(user);
localStorage.setItem("users",JSON.stringify(exist));
console.log(JSON.parse(localStorage.getItem("users")));
var obj = JSON.parse(localStorage.getItem("users"));
for(var i=0; i<obj.length; i++) {
console.log('key: ' + i + '\n' + 'value: ' + obj[i]);
}
}
查看 Chrome 开发人员工具 localStorage 如下所示:
[[{"name":"a","city":"a"}],{"name":"b","city":"b"}]
但我想要的是:
[{"name":"a","city":"a"},{"name":"b","city":"b"}]
我做错了什么?
感谢任何帮助,
此致,
localStorage
只存储 strings
。您需要 stringify
您的 exist
然后保存到 storage
localStorage.setItem("users",JSON.stringify(exist));
要检索它,请使用 JSON.parse
var exist = JSON.parse(localStorage.exist); //Even for users object do the same
更新
要仅将数组 tmp
内的对象推送到 exist
,请使用 map()
:
tmp.map(function(item){
exist.push(item);
})