(function{
var array = localStorage.getItem('id') || [];
obj = {};
obj.id=1;
array.push(obj);
localStorage.setItem('id',JSON.stringify(array));
}();
为什么在我的localStorage中不插入obj两次?我看到它取代了现有的。将多个数组对象推入localhost?
(function{
var array = localStorage.getItem('id') || [];
obj = {};
obj.id=1;
array.push(obj);
localStorage.setItem('id',JSON.stringify(array));
}();
为什么在我的localStorage中不插入obj两次?我看到它取代了现有的。将多个数组对象推入localhost?
它取代现有的。
试试这个:你第一次将它添加
if(localStorage.getItem('id')){ array = JSON.parse(localStorage.getItem('id')) } else {
var array = []; }
obj = {};
obj.id=1;
array.push(obj);
localStorage.setItem('id',JSON.stringify(array));
每次得到localStorage的项目,然后添加到它,并把它回来。
这工作!谢谢。任何想法如何避免重复?如果找到相同的id,则将id增加1,有什么想法? –
有两种选择,您将数组更改为一个对象,然后id将是关键。 (array = {}; obj = {}; obj.id = 1; array [obj.id] = obj;)如果id相同,它会替换旧的id,如果id不同,它会被添加。另一个是通过阵列并检查它是否存在。 – OSDM
您的代码导致语法错误。它不会按照您发布的方式运行。此外,您正尝试每次将相同的一个项目数组写入localStorage,因此内容总是一个项目数组并不奇怪。 – jfriend00
从半小时前,这与[另一个用户的问题](http://stackoverflow.com/questions/31352976/push-array-object-into-localstorage#comment50688677_31352976)是一样的问题吗?您的代码创建一个新的* empty *数组,向其添加一个项目,然后将字符串化版本放入本地存储中。为什么它不*替换本地存储中已有的东西?您需要检索那里并添加到它,而不是创建一个空数组(第一次除外)。 – nnnnnn
@nnnnnn你能告诉我吗?对不起,新的JavaScript。如果你想增加值,每一个都必须是唯一的,你可以在localstorage中使用 –