【问题标题】:push multiple array object into localStorage?将多个数组对象推入localStorage?
【发布时间】:2020-02-01 15:15:36
【问题描述】:
(function{
    var array = localStorage.getItem('id') || [];
    obj = {};
    obj.id = 1;
    array.push(obj);

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

为什么在我的 localStorage 中它不插入 obj 两次?我看到它取代了现有的。

【问题讨论】:

  • 您的代码导致语法错误。它不会像您发布的那样运行。另外,您每次都尝试将相同的单项数组写入 localStorage,因此内容始终是单项数组也就不足为奇了。
  • 这和半小时前another user's question的问题一样吗?您的代码创建一个新的 empty 数组,向其中添加一项,然后将字符串化版本放入本地存储。为什么它替换本地存储中已经存在的内容?您需要检索那里的内容并添加到其中,而不是创建一个空数组(第一次除外)。
  • @nnnnnn 你能告诉我吗?抱歉,JavaScript 新手。
  • 在本地存储中,如果你想增加每个必须唯一的价值。每个键都表示为主键或索引,用于保存和检索值。

标签: javascript local-storage


【解决方案1】:

它确实取代了现有的。

试试这个:

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));

每次添加时,首先获取本地存储项,然后添加到它并放回去。

【讨论】:

  • 这成功了!谢谢。知道如何避免重复吗?如果找到相同的 id,则将 id 加 1,有什么想法吗?
  • 那个有两个选项,你把数组变成一个对象,然后id就是key。 (array = {}; obj = {}; obj.id = 1; array[obj.id] = obj;) 如果 id 相同,它会替换旧的会发生什么,如果 id 不同,它会被添加。另一种是遍历数组并检查它是否存在。
猜你喜欢
  • 2016-05-30
  • 2021-10-19
  • 2019-12-25
  • 1970-01-01
  • 2013-04-11
  • 1970-01-01
  • 2017-12-05
  • 1970-01-01
相关资源
最近更新 更多