2015-07-11 198 views
0
(function{ 
var array = localStorage.getItem('id') || []; 
obj = {}; 
obj.id=1; 
array.push(obj); 

localStorage.setItem('id',JSON.stringify(array)); 
}(); 

为什么在我的localStorage中不插入obj两次?我看到它取代了现有的。将多个数组对象推入localhost?

+0

您的代码导致语法错误。它不会按照您发布的方式运行。此外,您正尝试每次将相同的一个项目数组写入localStorage,因此内容总是一个项目数组并不奇怪。 – jfriend00

+0

从半小时前,这与[另一个用户的问题](http://stackoverflow.com/questions/31352976/push-array-object-into-localstorage#comment50688677_31352976)是一样的问题吗?您的代码创建一个新的* empty *数组,向其添加一个项目,然后将字符串化版本放入本地存储中。为什么它不*替换本地存储中已有的东西?您需要检索那里并添加到它,而不是创建一个空数组(第一次除外)。 – nnnnnn

+0

@nnnnnn你能告诉我吗?对不起,新的JavaScript。如果你想增加值,每一个都必须是唯一的,你可以在localstorage中使用 –

回答

0

它取代现有的。

试试这个:你第一次将它添加

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的项目,然后添加到它,并把它回来。

+0

这工作!谢谢。任何想法如何避免重复?如果找到相同的id,则将id增加1,有什么想法? –

+0

有两种选择,您将数组更改为一个对象,然后id将是关键。 (array = {}; obj = {}; obj.id = 1; array [obj.id] = obj;)如果id相同,它会替换旧的id,如果id不同,它会被添加。另一个是通过阵列并检查它是否存在。 – OSDM