我提出了以下解决方案,用于基于参数值调用不同的函数。有没有更好/更简单的方法?
function mainFunction(input, category) {
categories = {
'category1': () => { return { /* return stuff */ }}
'category2': () => { return { /* return stuff */ }}
}
return categories[category].call();
}
谢谢!
答案 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');