简体   繁体   中英

Delete array from object in localstorage

When I click on a button I load the function "DeleteFromlocalStorage" with the parameter "id". This is my function "DeleteFromlocalStorage":

        function DeleteSessionFromLocalStorage(data)
    {
        var id_session = data;

        a = localStorage.getItem('session');

        alert(a);

    }

My alert(a); gives me this output:

{"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","maptype":"plan","imageurl":"","presentation":"","organizer":"0","twitter":"","allowAddToFavorites":"0","allowAddToAgenda":"0","votes":"0","url":"","venueid":"0"}, "21115 :{"id":"21115","external_id":"","sessiongroupid":"1845","eventid":"5588","order":"0","name":"tweede","description":"tweede","starttime":"2013-04-03 00:00:00","endtime":"2013-04-04 00:00:00","speaker":"","location":"","mapid":"0","xpos":"0.000000","ypos":"0.000000","maptype":"plan","imageurl":"","presentation":"","organizer":"0","twitter":"","allowAddToFavorites":"0","allowAddToAgenda":"0","votes":"0","url":"","venueid":"0"},"21118":{"id":"21118","external_id":"","sessiongroupid":"1848","eventid":"5588","order":"0","name":"ja vascript session","description":"session about javascript","starttime":"2013-05-15 12:00:00","endtime":"2013-05-15 12:30:00","speaker":"","location":"waregem","mapid":"0","xpos":"0.000000","ypos":"0.000000","maptype":"plan","imageurl":"","presentation":"","organizer":"0","twitter":"","allowAddToFavorites":"0","allowAddToAgenda":"0","votes":"0","url":"","venueid":"0"}}

As you can see I have a json string. The key is always the id. Now I want to delete the json with the id = parameter id.

I will have to get the object and delete the subobject and restore the object in my localStorage. Does anybody know how I can do this?

Thanks in advance!

Stringifying anything large into a single localStorage entry is very inefficient if you ever need to edit it.

You need http://rhaboo.org - that's what it's for. It's a wrapper for localStorage that uses lots of localStorage entries so you can efficiently edit bits of a large object.

The API is incredibly simple, eg:

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);

BTW, I wrote rhaboo.

I may be wrong but here is what you want to do:

Either localStorage.removeItem(key);

Or if ifs something within the localStorage JSON item then do:

  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);

}

Your code sample just looks like a javascript object to me. In which case you can use the 'delete' keyword. Good discussion here:

How do I remove a property from a JavaScript object?

So something like

delete a["21114"]

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

            }
        }

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

Get the objects, check every id of every object and delete the ones with the id = "id_session".

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM