javascript - 如何按条件为json对象设置值?
问题描述
我有一个从服务器返回的列表对象,例如:
{
"items": [
{
"id": 1,
"role": "SYSTEM_ADMIN"
},
{
"id": 2,
"role": "SYSTEM"
},
{
"id": 3,
"role": "USER"
}
]
}
这里的问题是我想在上面的json中设置每个对象的rank值遵循条件:
- SYSTEM_ADMIN => 排名:3
- 系统 => 排名:2
- 用户 => 排名 1
例子:
{
"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太多?感谢大家
解决方案
正如一些人建议的那样,最好在创建响应时在服务器上进行。
如果由于某种原因您仍然需要在前端执行此操作,您可以创建一个常量映射,将每个角色值的等级存储在对象映射中:
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);
推荐阅读
- python - 如何在启动 Django 开发服务器时从 http://127.0.0.1:8000 重定向到 http://127.0.0.1:8000/login/?
- c++ - 从 C++ 打开 QML Popup 而不阻塞程序的其余部分
- swift - SwiftUI 按高度百分比调整 VStack 的帧大小
- sql - 将所有 IP 列入白名单或切换到不同的托管平台?
- c# - 启动进程后如何将焦点设置回调用表单(Chrome)
- wpf - 如何将我的 WPF 应用程序部署到客户的计算机上?
- syntax-highlighting - nano 的 Z3 语法高亮
- c# - 如何在 C# 中从 Folder.Zip 创建 Subfolder.Zip 文件
- sql-server - Azure SQL 数据库 Bacpac 导出缺少索引
- swift - 为什么一个简单的 Swift 算术运算编译得这么慢?