【发布时间】:2020-07-09 20:32:57
【问题描述】:
这将根据每个用户的角色而有所不同。我正在寻找一个看起来像这样的对象:
let permissions = {
'state': {
'tool': ['subTool1', 'subTool2']
}
}
一个例子:
roles = ['NY_email_submit', 'NY_email_approve', 'NY_build_submit', 'NY_build_view', 'DC_email_submit']
let permissions = {
'NY': {
'email': ['submit', 'approve'],
'build': ['submit', 'view']
},
'DC': {
'email': ['submit']
}
};
我正在遍历一个名为角色的列表,传入的其中包含像state_tool_subTool 这样的字符串。
我希望它没有重复。例如,如果下一个用户角色通过上述对象的循环运行是 NY_build_approve,我想简单地将批准添加到 ['build'] 的列表中。
目前我有这个不能正常工作。
roles.forEach(role => {
role = role.split('_');
let state = role[0];
let tool = role[1];
let subTool = role[2];
if ([state] in permissions) {
permissions[state] = { [`${tool}`]: [subTool] };
} else {
//permissions[state][`${tool}`].push(subTool);
}
});
【问题讨论】:
-
您能提供更多的测试输入吗?
-
@AJFerron 我添加了将创建该示例对象的列表。如果您需要更多,我会提供
标签: javascript arrays object foreach