我想根据找到的输入调用不同的函数。如果输入与键之一匹配,我想调用相应的函数-使用一些参数:

var commands = {
  'key1': someFunction,
  'key2': otherFunction
};


键是字符串,为了简化起见,我创建了command_keys变量:

var command_keys = Object.keys(commands);


我在下面进一步定义了两个函数:

function someFunction(param) {
 // do sth.
};

function otherFunction(param) {
 // do sth. else
};


然后,我有一个条件检查密钥并根据找到的密钥调用其中一个函数:

if (command_keys.indexOf(some_string) > -1) {
  index = command_keys.indexOf(some_string);
  commands[index](some_param);
}


但是,我得到一个错误:

Uncaught TypeError: commands[index] is not a function(anonymous function)


谢谢您的想法。

最佳答案

我认为您根本不需要command_keys。仅commands即可满足您在此处描述的内容。

var commands = {
    'key1': someFunction,
    'key2': otherFunction
};

var command = commands[some_string];
if (typeof command === 'function') {
    command(some_param);
}

关于javascript - Javascript:用作哈希值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31898739/

10-12 01:24