下面的代码我试图查看其中一个 CrmRoles 是否在 rolesToVerify 列表中,但是当我遍历它时,我一直为 roleToVerify 获取“undefined”。
const rolesToVerify = ["System Administrator", "Payroll"]
function userHasOneOrMoreRoles(currentUserRoles: CrmRole[], rolesToVerify: String[]) {
for (let currentUserRole of currentUserRoles) {
return rolesToVerify.some(roleToVerify =>
currentUserRole.Name === roleToVerify);
}
return false;
}
最佳答案
你在一个循环中返回,独立于任何条件或任何东西。没办法,您的循环会通过第一次迭代。
//And you can shorten
rolesToVerify.some(roleToVerify => currentUserRole.Name === roleToVerify);
//to
rolesToVerify.includes(currentUserRole.Name);
所以要么
function userHasOneOrMoreRoles(currentUserRoles: CrmRole[], rolesToVerify: String[]) {
for (let currentUserRole of currentUserRoles) {
if(rolesToVerify.includes(currentUserRole.Name))
return true;
}
return false;
}
或
function userHasOneOrMoreRoles(currentUserRoles: CrmRole[], rolesToVerify: String[]) {
return currentUserRoles.some(currentUserRole => rolesToVerify.includes(currentUserRole.Name));
}
关于Javascript 某些方法嵌套在 For 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47874277/