数组localStorage

时间:2015-04-26 20:30:23

标签: javascript arrays json object local-storage

我在localStorage中获得了以下一对Key / Value:

关键:事件

价值:

   [
      {'Date': '4-5-2015', 
      'Event': 'Theater', 
      'Duration': '2 hours'},

     {'Date': '4-5-2015', 
      'Event': 'Bowling', 
      'Duration': '3 hours in the evening'},

      ...

     {'Date': '10-5-2015', 
      'Event': 'Driving', 
      'Duration': '4 hours of driving'},

    ];

该代码适用于日历。每天只能举办一次活动。我的问题是,当我在同一天存储较新的数据时,我无法移除一天的先前数据。

我需要的是一个基于Javascript的普遍决定,它可以达到"我们存储的数据仅表示日期限定符。因此,我们删除了" old"事件和持续时间,然后存储"新"之一。

      for (i=0; i<events.length; i++) {

          if(newDate == yetStoredDate) {
          events[i].Event.removeItem(?) //How to refer only this Event?
          events[i].Duration.removeItem((?) //How to refer only this Duration?
           };

       };

我也尝试过splice()方法,但似乎只能删除整个块{Date / Event / Duration}。我没有设法在其帮助下找到具体元素。

3 个答案:

答案 0 :(得分:0)

仅指代数组元素并更改您需要尝试的本地存储:

        localStorage.setItem("events", JSON.stringify(events));
        for (i=0; i<events.length; i++) {
            if('4-5-2015' == events[i].Date) {
                events[i].Event = "new value";
                events[i].Duration = "new value";
                var x = JSON.parse(localStorage.getItem("events"));
                x[i] = events[i];
                localStorage.setItem("events", JSON.stringify(x));
            };
        };

希望这可以帮到你

答案 1 :(得分:0)

我认为使用LocalStorage执行此操作的唯一方法是只设置密钥的整个值。没有任何对LocalStorage项目的引用,您只需getset。因此,您无法更改整个值的一部分,而无法删除整个值以删除已删除的部分。

我只是使用LocalStorage包装器来处理更新键,在LocalStorage的实际值内使用值(使用JSON)

答案 2 :(得分:0)

使用 在if子句中delete events[i],然后添加新事件并将更改的JSON保存到localStorage。