Javascript 本地存储阵列
我在localStorage中获得了以下密钥/值对: 关键:事件 价值: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
[
{'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));
};
};