我使用此函数将数据推送到数组中,并将其保存在本地存储中.我的问题是,即使存在相同的profileID,我的函数也会推送到数组/保存到本地存储.我想要判断相同的profileID是否已经存在的东西,从本地存储/数组中删除对象,然后推送到本地存储/array.简而言之,我不希望在本地存储或数组中保存相同配置文件ID的重复项.我还希望为相同的配置文件ID将最新的对象保存在数组中,而不是旧的和新的

 
  PUSHData(){
    var myobj = {
      Button: this.isReadMore,
       Class: this.sampleElem.className,
      ProfiliD: this.id,

    };
   
    
    const saved = JSON.parse(localStorage.getItem('CollapseState'));
    if(saved != null){
      this.array.push(myobj);
      localStorage.setItem('CollapseState',JSON.stringify(this.array));
    }else{
      this.array.push(myobj);
      localStorage.setItem('CollapseState',JSON.stringify(this.array));

    }

这就是本地存储现在的样子

0: {Button: true, Class: "ShowHide", ProfiliD: "115279"}
1: [{Button: true, Class: "ShowHide", ProfiliD: "115279"},…]
  0: {Button: true, Class: "ShowHide", ProfiliD: "115279"}
  1: [{Button: true, Class: "ShowHide", ProfiliD: "115192"}]

如果能帮上忙,我将不胜感激

推荐答案

AS CollapseState包含本地存储中的对象array.您可以按照以下步骤来实现此要求:

  • 判断本地存储中是否存在ColapseState数组(您已经这样做了)

    const saved = JSON.parse(localStorage.getItem('CollapseState'));
    
  • 现在,因为saved将是一个数组,所以您可以迭代它以判断ProfiliD是否存在.如果存在,则将该对象从数组中拼接/移除.

    saved.forEach((o, index) => {
      if (o.ProfiliD === myobj.ProfiliD) {
        saved.splice(index, 1);
      }
    });
    
  • 现在将newObj推入保存的数组中.

    saved.push(newObj);
    
  • 最后一步,将更新后的saved数组设置到本地存储中.

    localStorage.setItem('CollapseState',JSON.stringify(saved));
    

Javascript相关问答推荐

如何在JavaScript文件中使用Json文件

在JS中拖放:检测文件

rxjs插入延迟数据

在我的index.html页面上找不到我的Java脚本条形图

Docent.cloneNode(TRUE)不克隆用户输入

我不知道如何纠正这一点.

FindByIdAndUpdate在嵌套对象中创建_id

在Press Reaction本机和EXPO av上播放单个文件

限制数组中每个元素的长度,

如何在加载页面时使锚定标记成为焦点

从客户端更新MongoDB数据库

使用重新 Select 和对象理解 Select 器备忘

如何在HTML中使用rxjs显示动态更新

2.0.0-dev quill拖动文本不起作用如何使其拖动文本

为什么我找不到东西?

如何在Angular中分离桌面和移动页面并延迟加载每个页面?

使用Video.play()时,视频显示白屏

我不能在ANGLE项目中使用addEventListner添加方法

如何隐藏SELECT中的第一个选项

使用关键帧的CSS动画未按预期工作