Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 本地存储阵列_Javascript_Arrays_Json_Object_Local Storage - Fatal编程技术网

Javascript 本地存储阵列

Javascript 本地存储阵列,javascript,arrays,json,object,local-storage,Javascript,Arrays,Json,Object,Local Storage,我在localStorage中获得了以下密钥/值对: 关键:事件 价值: [ {'Date': '4-5-2015', 'Event': 'Theater', 'Duration': '2 hours'}, {'Date': '4-5-2015', 'Event': 'Bowling', 'Duration': '3 hours in the evening'}, ... {'Date

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

关键:事件

价值:

   [
      {'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的通用决策,它可以通过日期限定符“访问”存储的数据。因此,我们删除“旧”事件和持续时间,然后存储“新”事件和持续时间


for(i=0;i要仅引用数组元素并更改所需的本地存储,请尝试:

        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));
            };
        };
localStorage.setItem(“事件”,JSON.stringify(事件));

对于(i=0;i我认为使用LocalStorage实现这一点的唯一方法是只为键设置整个值。没有对LocalStorage项的任何引用,您只需
获取它或
设置它。因此,如果不实际更新整个值以删除删除的部分,则无法更改值的一部分

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

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

是的,它可以工作,但不引用存储的数据。它可以更改可视事件,但我也需要从localStorage中删除“旧”数据。
        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));
            };
        };