首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >localStorage.removeItem()不从对象中移除键/值

localStorage.removeItem()不从对象中移除键/值
EN

Stack Overflow用户
提问于 2019-12-03 10:36:03
回答 2查看 1.2K关注 0票数 0

很难弄清楚这件事..。

我正在尝试从我的localStorage对象中删除一个键/值对。然而,没有任何东西被移除。(我也没有任何错误)。

据我所知,我可以删除有关的键/值,通过它的键名。下面是该对象的一个示例:

代码语言:javascript
运行
复制
   bookMarksArray:    [
        {
            "name": "reena",
            "url": "brian"
        },
        {
            "name": "joe",
            "url": "ault"
        }
       ]

这是我的密码..。我使用事件目标来抓取键名,并将其与对象索引匹配。

然后将该对象索引的键传入localStorage.removeItem()...。我做错了什么?

代码语言:javascript
运行
复制
  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

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-03 10:55:13

LocalStoage将值保存为字符串格式,所以每次都必须对JSON对象进行字符串化,以便将其保存在localStorage中,我们可以解决这个问题,请在下面找到代码片段,在此场景中很有用,

代码语言:javascript
运行
复制
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');

票数 3
EN

Stack Overflow用户

发布于 2019-12-03 10:56:22

代码语言:javascript
运行
复制
//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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59155122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档