typescript 在特定条件下以Angular 更新对象属性值的数组[已关闭]

iugsix8n  于 2022-12-01  发布在  TypeScript
关注(0)|答案(2)|浏览(143)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
2天前关闭。
Improve this question
我有一个从服务器返回的对象数组

{
    "Code": 200,
    "Message": "Success",
    "response": [
        {
            "UserId": null,
            "FullName": test,
            "Status": null,
            "IsActive": 1
        },
        {
            "UserId": null,
            "FullName": null,
            "Status": 'Active',
            "IsActive": 0
        }...
         ...
    ]
}

正在List变量中获取响应

this.Service.getUser(payload).subscribe(result => {
          this.List = result['response'];
 });

我需要一些方法来操作Status值,例如,如果状态为null,则为其分配Active值。
且再次将其存储在this.List变量中,而不使用任何循环。
请提出一些解决办法。
谢谢

nzkunb0c

nzkunb0c1#

由于响应对象是Array,您可以直接使用map覆盖它。{...user}将使用现有对象的所有属性。只有Status将被提供的逻辑覆盖。

this.List = result['response'].map((user) => ({...user, Status: user.status === null ? 'Active' : user.status}));

如果没有某种循环,你就无法解决这个问题。这就是数组的本质。

68bkxrlz

68bkxrlz2#

您可以在此处使用map来循环response数组,并将State作为Active添加,如果Status === null

const apiData = {
  "Code": 200,
  "Message": "Success",
  "response": [{
      "UserId": null,
      "FullName": 'test',
      "Status": null,
      "IsActive": 1
    },
    {
      "UserId": null,
      "FullName": null,
      "Status": 'Active',
      "IsActive": 0
    }
  ]
}

const result = apiData.response.map(o => ({ ...o, Status: o.Status ?? "Active" }));
console.log(result);

相关问题