Angular 从localstorage中的对象删除阵列项-Ionic应用程序

Angular 从localstorage中的对象删除阵列项-Ionic应用程序,angular,typescript,ionic-framework,local-storage,Angular,Typescript,Ionic Framework,Local Storage,我有一个Ionic应用程序,将数据存储在localStorage中。要求是根据用户的单击,从localStorage上对象的数组中删除一些项 我有下面的代码,但不知怎么的不工作。请指出我犯错误的地方 home.html: 提醒{{项目[0]+1} {{项目[1]|日期:'medium'} home.ts: 删除提醒(项目){ var newObj=JSON.parse(localStorage.getItem('Data'); console.log(“要删除的索引”,项); 新OBJ.数据

我有一个
Ionic
应用程序,将数据存储在
localStorage
中。要求是根据用户的
单击
,从
localStorage
上对象的数组中删除一些项

我有下面的代码,但不知怎么的不工作。请指出我犯错误的地方

home.html:


提醒{{项目[0]+1}
{{项目[1]|日期:'medium'}
home.ts:

删除提醒(项目){
var newObj=JSON.parse(localStorage.getItem('Data');
console.log(“要删除的索引”,项);
新OBJ.数据拼接(第1项)
setItem('Data',JSON.stringify(newObj));
}
我的
localStorage
如下所示:

Key   : Data
Value : {"data":[[0,"1600074900000"],[1,"1600679760000"]]}
let DataObj = JSON.parse(localStorage.getItem('Data'));
问题是上面的
主页。ts
正在删除完整的
数组
,而不是单击的项目

函数
(单击)=“删除提醒(项目)”
返回要删除的正确项目。例如,如果我单击任何项目
0,“1600074900000”
,它将返回
0,“1600074900000”
。我已通过console.log(项)进行了检查


但它并不是删除我正在选择的项目。相反,它是从数组顶部删除项。例如,若数组有3条记录,则从上到下删除记录。而且,当它到达最后一条记录时,它不会删除最后一条记录。

您必须
更新
本地存储中的值
removietem()
仅按键从本地存储中删除项。因此,不要删除该键,只需使用新的数据键重新设置:

  • const newObj=localStorage.getItem(“数据”)
  • 对象中删除
    索引
  • localStorage.setItem(“数据”,newObj)
  • 当您希望将对象存储在
    localStorage
    上时,最好使用
    JSON.stringfy
    如下:

    Key   : Data
    Value : {"data":[[0,"1600074900000"],[1,"1600679760000"]]}
    
    let DataObj = JSON.parse(localStorage.getItem('Data'));
    
    localStorage.setItem('Data',JSON.stringify({“Data”:[[0,16007490000”],[1,16006797600”]});
    
    因此,当您想要获取对象并进行修改时,可以执行以下操作:

    Key   : Data
    Value : {"data":[[0,"1600074900000"],[1,"1600679760000"]]}
    
    let DataObj = JSON.parse(localStorage.getItem('Data'));
    
    因此,如果您使用
    JSON.strinigfy()
    存储在
    home.ts
    中,请尝试以下操作:

    home.ts

    删除提醒(项目){
    让newObj=JSON.parse(localStorage.getItem('Data'));
    newObj.data.forEach((元素,索引)=>{
    if(元素[0]==项){
    新对象数据拼接(索引,1)
    }
    })
    setItem('Data',JSON.stringify(newObj));
    }
    
    我得到了带有以下更新代码的解决方案

    在home.html中,完成以下更新:

    <ng-container *ngFor="let item of items[0];let index = index" >
        <ion-item no-lines  class="items"  *ngIf='this.allObj1 != 0' (click)="deletereminder(index)">
    
    deletereminder(index){
        var newObj = JSON.parse(localStorage.getItem('Data'));
        var indextodelete = index;
        newObj.data.splice(indextodelete, 1)
        localStorage.setItem('Data', JSON.stringify(newObj));
        }
    

    我试过下面的方法,但不起作用。接头不工作
    const newObj=localStorage.getItem(“rp_data”)//从对象newObj.splice(索引,1)中删除索引;setItem(“rp_data”,newObj)
    我在回答中为您添加了一些要点。看那个。您必须使用
    JSON.stringify()
    &
    JSON.parse()
    ,然后您将拥有一个数据对象。从中取出阵列,然后使用拼接。好吗?我也为您添加了
    delet提醒()
    函数。此外,您的模板中的
    *ngFor
    不正确。我尝试了您的查询,但没有任何结果。我已经更新了
    delet提醒()
    ,还提供了这个新函数面临的问题。实际上
    if(element[0]==item)
    始终为false,因此不起作用。你能提出建议吗?你能把
    项目
    和你正在本地存储中设置的数组/对象都发布出来吗?这样我们就可以有更好的想法来玩了。你的代码的UI看起来怎么样,你能发布图像吗?