javascript - 如何在本地存储中存储对象数组?

标签 javascript arrays json

这是我的代码。几天以来,我一直在尝试创建一个对象数组,然后将其存储在本地存储中。这是问题所在,我需要先从本地存储中获取现有值。

然后我需要将新数据对象添加到现有数组中。然后我将它转换成 JSON,以便我可以将它存储回本地存储。

onRegisterSubmit(){
    const user = {
        a: this.a,
        b: this.b,
        c: this.c,
      id: Date.now()
    }    

   var abc = [];
   var get =  JSON.parse(localStorage.getItem('user'));
   abc = [get];
   abc.push(user);

   localStorage.setItem('user', JSON.stringify(abc));

   console.log(JSON.stringify(abc));
   console.log(get);
  }

我希望 JSON 是这样的对象数组,

[{"hour":1,"minute":21,"ampm":"PM","repeatDays":[],"message":"","todayOrTomorrow":"Tomorrow","isRepeatMode":false,"isEnabled":false,"id":"1493797882440"},{"hour":1,"minute":24,"ampm":"PM","repeatDays":[],"message":"","todayOrTomorrow":"Tomorrow","isRepeatMode":false,"isEnabled":false,"id":"1493797896257"},{"hour":6,"minute":14,"ampm":"PM","repeatDays":[],"message":"","todayOrTomorrow":"Tomorrow","isRepeatMode":false,"isEnabled":false,"id":"1493815470408"}]

这是我的 JSON。

[[[[[[[{"id":1493820594019},{"id":1493820606448}],{"id":1493820609111}],{"id":1493820610150}],{"id":1493820610553}],{"id":1493820610827}],{"id":1493820611015}],{"id":1493820612018}]

我已经尝试了好几天,我们将不胜感激任何帮助。

最佳答案

该代码的问题是:

  1. 您将获得的结果包装在一个数组中,但理论上,您希望已经有一个数组。

  2. 您正在存储 user,而不是 getabc (您通过编辑删除了它。)

要存储数组,做你正在做的:

localStorage.setItem("users", JSON.stringify(users));

获取数组:

users = JSON.parse(localStorage.getItem("users") || "[]");

请注意,如果 getItem 返回 null,它是如何提供默认值(空数组)的,因为我们从未将用户存储在那里。

将用户添加到数组:

users.push({id: 1, foo: "bar"});

示例(live on jsFiddle [堆栈片段不允许本地存储]):

(function() { // Scoping function to avoid creating globals
    // Loading
    var users = JSON.parse(localStorage.getItem("users") || "[]");
    console.log("# of users: " + users.length);
    users.forEach(function(user, index) {
        console.log("[" + index + "]: " + user.id);
    });

    // Modifying
    var user = {
        id: Math.floor(Math.random() * 1000000)
    };
    users.push(user);
    console.log("Added user #" + user.id);

    // Saving
    localStorage.setItem("users", JSON.stringify(users));
})();

这会在控制台中显示当前用户的列表,每次刷新页面时都会添加一个。

关于javascript - 如何在本地存储中存储对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43762363/

相关文章:

c - 在c中根据另一个数组按升序对一个数组进行排序

JSONObject 删除小数点,如果是整数

javascript - 文本被隐藏,需要时间才能在 Webkit 中使用 slider 显示

javascript - Haskell WARP/WAI 服务器无法响应来自 Android 嵌入式 WebView 的 AJAX 调用

python - 根据用户输入创建 N 维动态数组?

javascript - 函数仅接收字符串数组的第一个元素

javascript - 将数组对象字段数据添加到 JavaScript 中的单个对象中

node.js - 如何在 NodeJs 响应中仅发送列表的特定属性

javascript - 如何检查字符串是否以javascript中的数字开头

javascript - 在动态导航栏中修复三个 div