有更优雅的JavaScript解决方案吗?

时间:2015-06-05 17:25:39

标签: javascript underscore.js

处理角色检查功能。我将纯文本用户角色存储在数据库中,因为它更容易理解。我将userRole转换为$ roles数组的索引值,对needRole执行相同操作,然后检查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;
    }

}

1 个答案:

答案 0 :(得分:2)

您可以使用.indexOf简化此操作。

DEMO

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


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