ecmascript-6 - Lodash:根据条件在多级Json中查找并添加项目
问题描述
我正在尝试根据条件将项目添加到“角色数组”。
我的json:
[{
"unitId": "2",
name: "elizabeth",
roles: [{
"role": {
"roleId": "2",
roleName: "testing"
}
}, {
"role": {
"roleId": "5",
roleName: "dev"
}
}]
},
{
"unitId": "3",
name: "peter",
roles: [{
"role": {
"roleId": "1",
roleName: "testing"
}
}, {
"role": {
"roleId": "2",
roleName: "dev"
}
}]
}
]
let newRole = { "role":{"roleId" : "6", roleName: "BA"}}
预期结果:将 newRole 添加到角色数组后。
[{
"unitId": "2",
name: "elizabeth",
roles: [{
"role": {
"roleId": "2",
roleName: "testing"
}
}, {
"role": {
"roleId": "5",
roleName: "dev"
}
}, {
"role": {
"roleId": "6",
roleName: "BA"
}
}]
},
{
"unitId": "3",
name: "peter",
roles: [{
"role": {
"roleId": "1",
roleName: "testing"
}
}, {
"role": {
"roleId": "2",
roleName: "dev"
}
}]
}
]
这里对于unitId:2,我正在尝试向“角色数组”添加一个新角色。我尝试了 lodash 的过滤器和推送,但是没有用。
解决方案
如果我理解正确,您正在尝试添加基于“unitId”的新角色。希望这可以帮助。
const a = [{
"unitId": "2",
name: "elizabeth",
roles: [{"role": {"roleId": "2", roleName: "testing"}}, {"role": {"roleId": "5", roleName: "dev"}}]
}, {
"unitId": "3",
name: "peter",
roles: [{"role": {"roleId": "1", roleName: "testing"}}, {"role": {"roleId": "2", roleName: "dev"}}]
}];
const newRole = { "role":{"roleId" : "6", roleName: "BA"}};
const insert = (arr, id, newRole) => {
const whereToPush = arr.find((item) => item.unitId === id);
if (whereToPush) whereToPush.roles.push(newRole);
};
insert(a, '2', newRole);
console.log(a);
推荐阅读
- android - Web 推送通知是否可以在 Apache Cordova Android 应用程序中使用?
- python - Python 诅咒如何用 curses.setsyx(y,x) 改变光标位置?
- c# - Mysql连接错误和Ipv6协议
- payment-gateway - 对已结算的批次进行更改
- python - StatsModels:返回没有截距的线性回归的预测区间
- firebase - Firebase 电子邮件验证不起作用
- ruby - 如何对ruby中的嵌套哈希进行排序?
- php - HTML 表单未通过 PHP 处理器将数据发布到 MySQL 数据库中
- tcp - TCP Tahoe 和 Reno:拥塞窗口为奇数时的阈值
- python-3.x - Pandas 按对象分组的相等级别