如何在本地存储中存储一系列对象



这是我的代码。我从几天开始尝试创建一系列对象,然后将其存储在本地存储中。这是问题,我需要首先从本地存储中获取现有值。

然后,我需要将新数据对象添加到现有数组中。然后,我将其转换为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"});

示例(在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));
})();

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

尝试这样的东西: - 链接https://jsfiddle.net/sureshraina/nlexkyfw/1/

var mydatas = new Array();
        mydatas[0] = "data";
        mydatas[1] = "data1";
        mydatas[2] = "data2";
        localStorage["mydatas"] = JSON.stringify(mydatas);
        var datas = JSON.parse(localStorage["mydatas"]); 

请参阅此帖子。

您无法存储对象,您必须存储一个字符串。因此,解决方法是在存储对象之前将其串起(例如,您可以将其更改为JSON对象,将其存储并在需要时再次读取(。

最新更新