javascript - 更新数组中一个对象的值

标签 javascript arrays angular for-loop ionic-framework

我正在尝试更新数组中的一个值。基本上我想更新数组中一个对象的状态值。这是我的数组

[
  {
    "projects": {
      "projectname": "one",
      "dateadded": "16 April 2018, 7:23AM",
      "status": 1
    }
  },
  {
    "projects": {
      "projectname": "two",
      "dateadded": "16 April 2018, 7:23AM",
      "status": 1
    }
  },
  {
    "projects": {
      "projectname": "three",
      "dateadded": "16 April 2018, 7:32AM",
      "status": 1
    }
  }
]

这是我的尝试,但它更新了数组中的所有内容。 参数1是项目名称——看我是不是在正确的项目上

archive(){

    var parameter1 = this.navParams.get('param1');

    this.storage.get('projectsStore').then(data => {

      for (var i = 0; i < data.length; i++) {
        if (data[i].projects.projectname == parameter1) {
          this.project = [{ "projectname":data[i].projects.projectname, "dateadded":data[i].projects.dateadded, "location":data[i].projects.location, "status":0 }];
        }
      }

    });

    this.storage.set( 'projectsStore', this.project );

}

所以澄清这是我想要实现的。假设用户为项目 3 执行存档功能,那么数组需要看起来像这样(项目 3 的状态已更新,但项目 1 和 2 的状态未更新)

[
  {
    "projects": {
      "projectname": "one",
      "dateadded": "16 April 2018, 7:23AM",
      "status": 1
    }
  },
  {
    "projects": {
      "projectname": "two",
      "dateadded": "16 April 2018, 7:23AM",
      "status": 1
    }
  },
  {
    "projects": {
      "projectname": "three",
      "dateadded": "16 April 2018, 7:32AM",
      "status": 0
    }
  }
]

最佳答案

如果你想更新projectname === parameter1status,你可以

var parameter1 = 'three';

var data = [{
    "projects": {
      "projectname": "one",
      "dateadded": "16 April 2018, 7:23AM",
      "status": 1
    }
  },
  {
    "projects": {
      "projectname": "two",
      "dateadded": "16 April 2018, 7:23AM",
      "status": 1
    }
  },
  {
    "projects": {
      "projectname": "three",
      "dateadded": "16 April 2018, 7:32AM",
      "status": 1
    }
  }
];

data.forEach(v => {
  //Test if projectname  == parameter1. If it is update status
  if (v.projects.projectname === parameter1) v.projects.status = 0;
});

console.log(data);

关于javascript - 更新数组中一个对象的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49850253/

相关文章:

javascript - Angular2 - 无法获取/

javascript - 从 JSON 数组中获取变量

python - 如何将 numpy ndarray 保存为 .csv 文件?

javascript - 如何向 Node js中的所有连接的客户端发送广播

javascript - 检查输入是否在两个 int 或 float 之间然后显示或不显示内容

ios - 根据字符串名称数组过滤 Person 对象数组的有效方法

angular - y 所需的入口点 x 不存在

Angular-CLI 代理不起作用

单击事件上未定义 Javascript 函数

javascript - 下拉语义-UI : Keep the button value by change event