如何使用Javascript和/或Jquery删除本地存储中对象内的键?

时间:2016-07-22 03:17:37

标签: javascript jquery json local-storage

在本地存储空间中,我有一个名为 favourites 的对象,它包含此内容..

"{
    "id3333":{
        "URL":"somewhere.comm/page1/",
        "TITLE":"Page 1 Title",
    },
    "id4444":{
        "URL":"somewhere.comm/page2/",
        "TITLE":"Page 2 Title",
    }
}"

如何根据其ID删除对象(例如id3333& id4444)

我已经尝试了以下其他一些伏都教..

localStorage.removeItem('id3333'); // no errors, no removal
localStorage.removeItem('favourites':'id3333'); // SyntaxError: missing ) after argument list
localStorage.removeItem('favourites[id3333]'); // no errors, no removal
localStorage.removeItem('id3333', JSON.stringify('id3333')); // no errors, no removal

,我需要根据变量获取要删除的密钥名称,所以就这样..

var postID = 'id3333';
localStorage.removeItem(postID);

var objectName = 'favourites';
var postID = 'id3333';
localStorage.removeItem(objectName[postID]);

是否可以直接删除嵌套项目,还是需要检索完整对象然后删除该项目,然后再将对象重新设置回本地存储?

到目前为止,我最接近删除任何内容的是...

localStorage.removeItem('favourites');

但这当然会删除整个对象。

4 个答案:

答案 0 :(得分:4)

你只有一把钥匙就像有多个钥匙一样

var obj = {
    "id3333":{
        "URL":"somewhere.comm/page1/",
        "TITLE":"Page 1 Title",
    },
    "id4444":{
        "URL":"somewhere.comm/page2/",
        "TITLE":"Page 2 Title",
    }
};

window.localStorage.favs = JSON.stringify(obj);  //store object to local storage
console.log("before : ", window.localStorage.favs);  //display it
var favs = JSON.parse(window.localStorage.favs || {});  //read and convert to object
var delKey = "id3333";  //key to remove
if (favs[delKey]) {  //check if key exists
    delete favs[delKey];  //remove the key from object
}
window.localStorage.favs = JSON.stringify(favs);  //save it back
console.log("after : ", window.localStorage.favs);  //display object with item removed

答案 1 :(得分:1)

使用localStorage.removeItem,您只能删除顶级密钥,即直接在localStorage上删除密钥。

由于id3333位于localStorage.favourites,您无法使用localStorage.removeItem将其删除。

而是尝试delete localStorage.favourties['id3333']

答案 2 :(得分:1)

简单,实际上:你只是delete它。 :)

x = {
    "id3333":{
        "URL":"somewhere.comm/page1/",
        "TITLE":"Page 1 Title",
    },
    "id4444":{
        "URL":"somewhere.comm/page2/",
        "TITLE":"Page 2 Title",
    }
};
console.log(x);
delete x.id3333;
console.log(x);

delete做你想要的。如果您愿意,也可以执行delete x.id3333.TITLE之类的操作。另请注意,delete如果成功则返回true,如果不成功,则返回false

答案 3 :(得分:0)

假设您在localStorage中设置了这样的嵌套对象

extensions/users-permissions

现在,您要删除controllers/Auth.js属性。您无法使用const dataObj = { uid: { name: 'robin', age: 24, } } window.localStorage.setItem('users', JSON.stringify(dataObj)); 本机功能将其删除,因为它允许从顶层删除。

因此,您需要先获取数据并删除所需的属性,然后再次将数据设置为具有这样更新值的localStorage

age