首页 > 解决方案 > 如何按条件为json对象设置值?

问题描述

我有一个从服务器返回的列表对象,例如:

{
    "items": [
        {
            "id": 1,
            "role": "SYSTEM_ADMIN"
        },
        {
            "id": 2,
            "role": "SYSTEM"
        },
        {
            "id": 3,
            "role": "USER"
        }
    ]
}

这里的问题是我想在上面的json中设置每个对象的rank值遵循条件:

例子:

{
    "items": [
        {
            "id": 1,
            "role": "SYSTEM_ADMIN",
            "rank": 3
        },
        {
            "id": 2,
            "role": "SYSTEM",
            "rank": 2
        },
        {
            "id": 3,
            "role": "USER",
            "rank": 1
        },
        {
            "id": 4,
            "role": "SYSTEM",
            "rank": 2
        }
    ]
}

如何使用javascript快速设置对象的rank值而不用if else太多?感谢大家

标签: javascriptjson

解决方案


正如一些人建议的那样,最好在创建响应时在服务器上进行。

如果由于某种原因您仍然需要在前端执行此操作,您可以创建一个常量映射,将每个角色值的等级存储在对象映射中:

const rankMap = {
  SYSTEM_ADMIN: 3,
  SYSTEM: 2,
  USER: 1
};

const data = {
  "items": [{
      "id": 1,
      "role": "SYSTEM_ADMIN"
    },
    {
      "id": 2,
      "role": "SYSTEM"
    },
    {
      "id": 3,
      "role": "USER"
    }
  ]
}

data.items = data.items.map(item => ({
  ...item,
  rank: rankMap[item.role],
}));

console.log(data);


推荐阅读