Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的实用程序映射器函数_Javascript - Fatal编程技术网

javascript中的实用程序映射器函数

javascript中的实用程序映射器函数,javascript,Javascript,我想知道是否有办法用javascript编写映射器函数,我所说的映射函数不是指ES6 map HOF, 我真正需要的是当我得到一个响应或数据,我希望从中产生一个有条件的结果, 例如,如果角色:['ADMIN']执行此操作, if role:['HEAD']执行此操作,现在可以使用if-else或switch执行此操作,但我不想为此编写条件,因为将来可能会处理更多条件。因此,有没有一种方法可以创建一个自定义映射器函数来实现这一点,它在api调用中也很有用,因为当用户具有特定角色时,他/她可以进行此

我想知道是否有办法用javascript编写映射器函数,我所说的映射函数不是指ES6 map HOF, 我真正需要的是当我得到一个响应或数据,我希望从中产生一个有条件的结果, 例如,如果角色:['ADMIN']执行此操作, if role:['HEAD']执行此操作,现在可以使用if-else或switch执行此操作,但我不想为此编写条件,因为将来可能会处理更多条件。因此,有没有一种方法可以创建一个自定义映射器函数来实现这一点,它在api调用中也很有用,因为当用户具有特定角色时,他/她可以进行此特定api调用 如果您需要更多信息,请发表评论


谢谢

我不知道这样做是否正确,但您可以创建一个包含函数的对象

这看起来有点像:

const map = {
    'ADMIN': () => { console.log('your role is admin') },
    'HEAD': () => { console.log('your role is head') }
};

map['ADMIN'](); // Outputs 'your role is admin'

但是,如果您由于任何原因收到垃圾数据,该怎么办呢。您的代码将出现错误

因此,您需要捕获该错误:

const role = 'blarg';
try {
    map[role]();
} catch(e) { 
    console.log('submittet incorect data') 
}

或者检查对象中是否存在
角色
键:


if(Object.keys(map).includes(role)) {
    map[role]()
}
但老实说,我仍然认为我会这样做:

function handleRole(role) {
  switch(role) {
    case 'ADMIN': function_for_admin(); break;
    case 'HEAD': function_for_head(); break;
  }
}

handleRole(role);

但是你怎么知道你会得到什么样的答案呢?当然有办法,你试过了吗?如果你想知道某个角色是“管理员”还是“负责人”,你确实需要使用
If
switch
你还想比较什么?您可以创建一个对象,尽管其中包含如下函数:
let map={“ADMIN”:()=>{},“HEAD”:()=>{}
然后执行
map[role]()
,但我不确定这样做是否正确