为数组中的不同元素运行不同的函数?

时间:2018-01-11 22:50:34

标签: javascript

假设你有一个这样的数组和相应的函数:

let myArray = ['foo','bar','zoomba','foo'];

doThings(myArray[1]);

你想要一个函数,根据字符串参数是' foo',' bar'还是' zoomba&#39来运行三个不同函数中的一个;

function doThings(myInput) {
   if (myInput === 'foo'){
     // run a nested function related to 'foo'
   }
   else if (myInput === 'bar') {
     //run a nested function related to 'bar'
   } // etc etc
 }

我们是否没有别的选择而不是串起来,如果在一起,是否有更好的方法将不同的函数或代码块与我们可能从数组甚至键值对返回的内容相匹配?

1 个答案:

答案 0 :(得分:0)

您可以将名称用作关键字:

function handle_foo() {}
function handle_bar() {}
function handle_zoomba() {}

var functions = {
    foo: handle_foo,
    bar: handle_bar,
    zoomba: handle_zoomba
};

function doThings(myInput) {
    var handle = functions[myInput];
    if (handle) {
        handle()
    }
}