首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从localStorage中删除记录时从数组中删除元素

从localStorage中删除记录时从数组中删除元素
EN

Stack Overflow用户
提问于 2020-10-17 02:38:46
回答 1查看 42关注 0票数 0

我有一个localStorage对象,如下所示:

密钥:jpxun

值:[{"id":"0","name":"royal"},{"id":"1","name":"tippins"},{"id":"4","name":"leviosa"},{"id":"5","name":"vicious"}]

我有这个JS来显示localStorage的输出:

代码语言:javascript
运行
复制
var jpxun = JSON.parse(localStorage.getItem('jpxun')) || [];

if (jpxun) {
    var jpxun_length = jpxun.length;
} else {
    var jpxun_length = 0;
}

var hst = document.getElementById("usernames");

var MyUsernames = JSON.parse(localStorage.getItem("jpxun"));

if (jpxun_length > 0) {

    // declare array to hold items for outputting later in plain text format
    var plain_text_array = [];

    for (var i = 0; i < MyUsernames.length; i++) {

        var un1 = MyUsernames[i].name;

        hst.innerHTML += "<li>" +"<a id="+MyUsernames[i].id + " href='#content' onclick='deleteById(this)'>x </a>" + un1 + "</li>";

        // add word to plain text array
        plain_text_array.push(un1);

    }

}

每个元素都输出到一个列表项中,并以'x‘作为超链接,这样就可以单击它,并将该元素从localStorage中删除。

以下是从localStorage中删除项目的代码:

代码语言:javascript
运行
复制
var deleteById = function ( self ){

  MyUsernames = MyUsernames.filter(function(elem) {
      return elem.id !== self.id;
  });
          
  localStorage.setItem("jpxun",JSON.stringify(MyUsernames));
  
  self.parentNode.parentNode.removeChild(self.parentNode);
  
}

这很好用。

不幸的是,我并不真正理解deleteById中的代码是如何工作的。

在这种情况下,当相应的记录的值从localStorage中删除时,我会纠结于如何从plain_text_array中删除它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-17 02:45:24

我会尝试在数组中查找包含该字符串'id="item_id"'的文本

代码语言:javascript
运行
复制
plain_text_array = plain_text_array.filter(item => !item.includes(`id="${self.id}"`));

只需将其添加到deleteById函数的末尾。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64394696

复制
相关文章

相似问题

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