2013-04-23 66 views
0

当我点击一个按钮时,使用参数“id”加载函数“DeleteFromlocalStorage”。 这是我的职责 “DeleteFromlocalStorage”:从本地存储中的对象删除数组

 function DeleteSessionFromLocalStorage(data) 
    { 
     var id_session = data; 

     a = localStorage.getItem('session'); 

     alert(a); 

    } 

alert(a);给了我这样的输出:

{ “21114”:{ “ID”: “21114”, “EXTERNAL_ID”: “”, “sessiongroupid”:“1844”,“eventid”:“5588”,“order”:“0”,“name”:“localStorage HTML5 Session”,“description”:“localstorage”,“starttime”:“2013-04 -23 12:00:00“,”endtime“:”2013-04-23 13:30:00“,”speaker“:”“,”location“:”“,”mapid“:”0“,”xpos “:” 0.000000" , “ypos”: “0.000000”, “地图类型”: “计划”, “IMAGEURL”: “”, “演讲”: “”, “组织者”: “0”, “推特”: “” ,“allowAddToFavorites”:“0”,“allowAddToAgenda”:“0”,“票数”:“0”,“url”:“”,“venueid”:“0”}, “21115:{”id“:”21115“,”external_id“:”“,”sessiongroupid“:”1845“,”eventid“:”5588“,”order“:”0“,”name“:”tweede “,”说明“:”tweede“,”starttime“:”2013-04-03 00:00:00“,”endtime“:”2013-04-04 00:00:00“,”发言人“:”“ , “位置”: “”, “的azazaz”: “0”, “XPOS”: “0.000000”, “ypos”: “0.000000”, “地图类型”: “计划”, “IMAGEURL”: “”, “演示” : “”, “组织者”: “0”, “推特”: “”, “allowAddToFavorites”: “0”, “allowAddToAgenda”: “0”, “票”: “0”, “URL”: “”, “venueid”: “0”}, “21118”:{ “ID”: “21118”, “EXTERNAL_ID”: “”, “sessiongroupid”: “1848”, “事件ID”: “5588”, “订单”:” 0“,”name“:”javascript session“,”description“:”关于javascript的会话“,”starttime“:”2013-05-15 12:00:00“,”endtime“:”2013-05-15 12 :30:00" , “扬声器”: “”, “位置”: “瓦勒海姆”, “的azazaz”: “0”, “XPOS”: “0.000000”, “ypos”: “0.000000”, “地图类型”:”计划 “ ”IMAGEURL“: ”“, ”演讲“: ”“, ”组织者“: ”0“, ”推特“: ”“, ”allowAddToFavorites“: ”0“, ”allowAddToAgenda“: ”0“,” 票“:”0“,”url“:”“,”venueid“:”0“}}

正如你所看到的,我有一个json字符串。关键始终是id。现在我想删除id =参数id的json。

我将不得不获取该对象并删除子对象,并恢复我的localStorage中的对象。有人知道我能做到吗?

在此先感谢!

+1

看起来更像是一个JSON字符串给我吗? – adeneo 2013-04-23 07:03:57

+0

你问的数组在哪里? – 2013-04-23 07:06:14

+0

如果知道键,然后用'localStorage.removeItem(键)'。 – 2013-04-23 07:06:23

回答

0
for(obj in json) {  
      if(json[obj].id == id_session) 
      { 
       delete json[obj]; 

      } 
     } 

     localStorage.setItem('session', JSON.stringify(json)); 

获取的对象,检查每个对象的每个ID,并删除与的那些id =“id_session”。

0

我可能是错的,但这里是你想做的事:

要么localStorage.removeItem(key);

或者如果localStorage的JSON项目中IFS的东西然后执行:

function DeleteSessionFromLocalStorage(data) 
{ 
    var id_session = data; 
    //Not sure but you might need to do JSON.parse(a) after to get it 
    a = localStorage.getItem('session'); 

    delete a.data 
    alert(a); 

} 
+0

不工作。我将不得不获取对象并删除子对象,并恢复localStorage中的对象。你知道我能做到吗? – nielsv 2013-04-23 07:16:25

+1

http://www.hiteshagrawal.com/javascript/object-manipulation-in-javascript – LmC 2013-04-23 07:17:11

0

您的代码示例只是看起来像一个JavaScript对象给我。在这种情况下,您可以使用“删除”关键字。好这里的讨论:

How do I remove a property from a JavaScript object?

因此,像

删除[ “21114”]

+0

不工作。我将不得不获取对象并删除子对象,并恢复localStorage中的对象。你知道我能做到吗? – nielsv 2013-04-23 07:21:05

+1

如果 'localStorage.getItem(' 会话 ');'实际上是返回一个字符串(你的问题没有准确显示),那么你需要把它变成一个javascript对象。 var obj = JSON.parse(localStorage.getItem('session'));删除obj [“key”]; – jgreen 2013-04-23 07:29:17

1

如果您需要编辑大量数据,将大量数据串入单个localStorage条目的效率非常低。

您需要http://rhaboo.org - 就是这么做的。它是localStorage的一个包装器,它使用大量localStorage条目,因此您可以高效地编辑大型对象的位。

的API是非常简单,例如:

var store = Rhaboo.persistent('Sessions etc'); 
//Initialise only if the store seems virginal... 
if (store.sessions === undefined) store.write('sessions', { 
    "21114":{"id":"21114","external_id":"","sessiongroupid":"1844","eventid":"5588"}, 
    "21115":{"id":"21115","external_id":"","sessiongroupid":"1845","eventid":"5588"}, 
    "21118":{"id":"21118","external_id":"","sessiongroupid":"1848","eventid":"5588"} 
}); 
console.log(store.sessions[21114].eventid); 
store.sessions.erase(21115); 

顺便说一句,我写rhaboo。

相关问题