有没有更优雅的javascript方案?

Is there a more elegant javascript solution?

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

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;
    }

}

您可以使用 .indexOf 来简化它。

DEMO

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


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