如何更新本地存储数组 Angular 中的值 7

How do you update a value in local Storage array Angular 7

我想做的是更新数组中的单个值,这是我目前拥有的代码,但它似乎无法正常工作,想知道是否有人能够帮助我有了这个。

所以,我认为它的工作原理是它从 ngFor 获取索引位置以及数组的自动递增 id 以确保它具有匹配项并将新名称推送到数组。

但这似乎不起作用,它执行 toastr 表示它已更新但它没有在本地存储中

     public updateNameLocalStorage(Name, id, i ): void {
          const currentArray = this.storage.get(this.STORAGE_KEY);
          console.log(currentArray);
          for (i = 0; i < currentArray.length; ++i) {
               if (currentArray[i].id === id) {
                    currentArray.push({
                         Name: Name
                     });
                     // insert updated array to local storage
                     this.storage.set(this.STORAGE_KEY, currentArray);
                     this.notifiy.showInfo('Name Updated'  , '');
                } else {
                    this.notifiy.showFailure('Error'  , '');

                }

          }

这是数据的结构

您正在使用 push 将一个元素追加到数组的末尾。如果你想用给定的 ID 更新一个值,只需直接访问索引并覆盖该值。另外,如果你只是按下 {Name: Name} 数组中的对象就没有 属性 id 了。

像这样:

const currentArray = this.storage.get(this.STORAGE_KEY);
const index = currentArray.findIndex(e => e.id === id);
if(index >= 0) {
  currentArray[index] = {...currentArray[index], ...{Name:Name}}; 
  this.storage.set(this.STORAGE_KEY, currentArray);
  this.notifiy.showInfo('Name Updated'  , '');
} else {
  this.notifiy.showFailure('Error'  , '');
}