首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组localStorage

数组localStorage
EN

Stack Overflow用户
提问于 2015-04-27 04:30:23
回答 3查看 81关注 0票数 0

我在localStorage中获得了以下密钥/值对:

关键字:事件

值:

代码语言:javascript
复制
   [
      {'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的通用决策,它可以通过日期限定符来“到达”存储的数据。因此,我们删除“旧”事件和持续时间,然后存储“新”事件和持续时间。

代码语言:javascript
复制
      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}。在它的帮助下,我没能达到特定的元素。

EN

回答 3

Stack Overflow用户

发布于 2015-04-27 04:48:09

要只引用array的元素并更改本地存储,您需要尝试:

代码语言:javascript
复制
        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));
            };
        };

希望这能对你有所帮助

票数 0
EN

Stack Overflow用户

发布于 2015-04-27 05:33:21

我认为使用LocalStorage完成此操作的唯一方法是为键设置整个值。没有任何对LocalStorage项的引用,您只需getset它即可。因此,如果不实际更新整个值以删除删除的部分,则不能更改该值的一部分。

我刚刚使用了一个LocalStorage包装器来处理LocalStorage实际值内的键、值的更新(使用JSON)

票数 0
EN

Stack Overflow用户

发布于 2015-04-27 07:26:30

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29883151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档