有没有更优雅的javascript解决方案?

有没有更优雅的javascript解决方案?,javascript,underscore.js,Javascript,Underscore.js,正在使用角色检查功能。我在数据库中存储纯文本用户角色,因为它更容易理解。我将userRole转换为$roles数组的索引值,对neededRole执行相同的操作,然后检查userRole值是否小于neededRole值。这是可行的,但似乎有更干净的方法。我错了吗?或者我能用更少的代码完成同样的事情吗 roleCheck = function(){ var userRole = 'admin'; var reqRole = 'producer' var $roles =

正在使用角色检查功能。我在数据库中存储纯文本用户角色,因为它更容易理解。我将userRole转换为$roles数组的索引值,对neededRole执行相同的操作,然后检查userRole值是否小于neededRole值。这是可行的,但似乎有更干净的方法。我错了吗?或者我能用更少的代码完成同样的事情吗

roleCheck = function(){
    var userRole = 'admin'; 
    var reqRole = 'producer'
    var $roles = ['super', 'admin', 'producer', 'resource','client'];
    var userRoleValue;
    var reqRoleValue;

    _.each($roles, function(v, i){
        if(v===userRole){
            userRoleValue = i;
        }
    })

    _.each($roles, function(v, i){
        if(v===reqRole){
            reqRoleValue = i;
        }
    })
    if(userRoleValue<=reqRoleValue){
        return true;
    }else{
        return false;
    }

}
roleCheck=function(){
var userRole='admin';
var reqRole='生产者'
var$roles=['super','admin','producer','resource','client'];
var userRoleValue;
var再调节值;
_.每个($角色、功能(v、i){
if(v==用户角色){
userRoleValue=i;
}
})
_.每个($角色、功能(v、i){
如果(v==reqRole){
reqRoleValue=i;
}
})

如果(userRoleValue,您可以使用简化

roleCheck=函数(){
var userRole='admin',
reqRole='生产者',
角色=['super'、'admin'、'producer'、'resource'、'client'];

return(roles.indexOf(userRole)@EvanKnowles在一个阵列上,我只是问,因为这似乎是一种更干净的方式。这似乎更适合代码审查。虽然此功能根据您在帖子中的要求工作,但我确实想知道您希望通过此功能实现什么。这似乎根本不是一种有效的角色检查方式。我不知道了解为什么不能只检查用户是否具有X角色。
函数roleCheck(用户,expectedRole){return\uu0.contains(user.roles,expectedRole);}
在这里可以很好地工作。你不需要在这里存储所有角色,也不需要迭代它们,也不需要检查一个角色是否大于另一个角色。你只需要检查或一个用户(其角色存储在
user.roles
中)是否有
expectedRole
。在我发布上述内容之前,为了记录OP发布了一条注释,要求提供备选方案
roleCheck = function (){
  var userRole = 'admin',
      reqRole = 'producer',
      roles = ['super', 'admin', 'producer', 'resource','client'];


  return (roles.indexOf(userRole) <= roles.indexOf(reqRole));
}