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