有什么方法可以代替对象的该switch语句吗?
Object.keys(data).forEach(key => {
switch (true) {
case key === '1':
Store.get1();
return;
case key === '2':
get2();
return;
case key === '4':
get4(4);
return;
case key === '5':
get5({value1 = 5.value1, value2 = 5.value2});
return;
default:
break;
}
})
将其替换为以下内容:
Object.keys(data).forEach(key => {
const keyMap = {
1: Store.get1(),
2: get2(),
3: get3(),
4: get4(),
5: get5({value1 = 5.value1, value2 = 5.value2}),
};
return keyMap[key];
但是通过这种方式,keyMap中的每个函数每次都会被触发。
答案 0 :(得分:7)
除了原始语法错误外,只需在查找表中添加函数,然后调用它们即可:
const keyMap = {
1: Store.get1,
2: get2,
3: get3,
4: get4,
5: get5,
};
Object.keys(data).forEach(key => {
return keyMap[key]();
});
答案 1 :(得分:1)
您可以将函数调用存储在对象中,并在需要时调用它们。对于未知的键,将返回默认功能。
var fns = {
1: () => Store.get1(),
2: () => get2(),
4: () => get4(4),
5: () => get5({ value1 = 5.value1, value2 = 5.value2 }),
default: () => {}
};
Object
.keys(data)
.forEach(key => (fns[key] || fns.default)());