首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更新本地存储阵列Angular 7中的值

如何更新本地存储阵列Angular 7中的值
EN

Stack Overflow用户
提问于 2019-08-20 17:06:55
回答 1查看 420关注 0票数 0

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

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

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

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

                }

          }

这是数据的结构

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-20 17:36:07

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

如下所示:

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

https://stackoverflow.com/questions/57570247

复制
相关文章

相似问题

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