JavaScript中的Utility Mapper函数

时间:2019-07-12 05:56:42

标签: javascript

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

谢谢

1 个答案:

答案 0 :(得分:0)

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

这看起来有点像:

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') 
}

或检查对象中是否存在role键:


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