很难弄清楚这件事..。
我正在尝试从我的localStorage对象中删除一个键/值对。然而,没有任何东西被移除。(我也没有任何错误)。
据我所知,我可以删除有关的键/值,通过它的键名。下面是该对象的一个示例:
bookMarksArray: [
{
"name": "reena",
"url": "brian"
},
{
"name": "joe",
"url": "ault"
}
]
这是我的密码..。我使用事件目标来抓取键名,并将其与对象索引匹配。
然后将该对象索引的键传入localStorage.removeItem()...。我做错了什么?
list.addEventListener('click', event => {
if (event.target.classList.contains('js-delete-url')) {
const editName = event.target.parentElement.name.value;
const objIndex = bookMarksArray.findIndex(obj => obj.name === editName);
localStorage.removeItem(bookMarksArray[objIndex].name);
console.log('delete', bookMarksArray[objIndex].name);
}
});
控制台打印如下:
app.js:55删除reena
谢谢!
发布于 2019-12-03 10:55:13
LocalStoage将值保存为字符串格式,所以每次都必须对JSON对象进行字符串化,以便将其保存在localStorage中,我们可以解决这个问题,请在下面找到代码片段,在此场景中很有用,
var updateStorage = function(filterName) {
var bookMarksArray= [{"name": "reena", "url": "brian"}, {"name": "joe", "url": "ault"}]
localStorage.setItem('nameList', JSON.stringify(bookMarksArray));
var items = JSON.parse(localStorage.getItem('nameList'));
var updatedList = items.filter(function(a) {
return a.name !== filterName;
});
localStorage.setItem('nameList', JSON.stringify(updatedList));
console.log(localStorage.getItem('nameList'));
// result [{"name":"reena","url":"brian"}]
};
updateStorage('joe');
发布于 2019-12-03 10:56:22
//set js object to localstorage
localStorage.setItem('bookMarksArray',JSON.stringify(bookMarksArray))
//get js object from localstorage
bookMarksArray= JSON.parse(localStorage.getItem('bookMarksArray'))
//remove desired item
bookMarksArray = bookMarksArray.filter(function(item) {
return item.name !== 'reena';
});
//update js object in localstorage
localStorage.setItem('bookMarksArray',JSON.stringify(bookMarksArray))
https://stackoverflow.com/questions/59155122
复制相似问题