在本地存储空间中,我有一个名为 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');
但这当然会删除整个对象。
答案 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