如何使用参数调用不同的函数?

时间:2019-07-14 04:46:06

标签: javascript node.js

我提出了以下解决方案,用于基于参数值调用不同的函数。有没有更好/更简单的方法?

function mainFunction(input, category) {
  categories = {
    'category1': () => { return { /* return stuff */ }}
    'category2': () => { return { /* return stuff */ }}
  }
  return categories[category].call();
}

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以直接进行categories[category]()

但是,这是我的处理方法,以避免每次调用此函数时定义category对象:

const actions = {
  category1: (a, b, c) => { console.log(a, b, c) },
  category2: () => { return { /* return stuff */ }},
  call: (category, ...args) => {
    if (!actions[category]) {
      throw new Error("Invalid category.")
    }
    return actions[category](...args);
  }
}

actions.call("category1", 42, 7, 0)

答案 1 :(得分:0)

您可以尝试这样的事情。

function mainFunction(input, category) {
  const categories = {
    'category1': () => {  
      console.log('cat 1'); 
     },
    'category2': () => { 
      console.log('cat 1'); 
     }
  };
  
  if (categories[category]) {
   return categories[category]();
  } else {
    // throw error here
  }
 
}

mainFunction('test', 'category2');