2013-04-23 65 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。

相關問題