Reputation: 105
Any way to replace this switch statement for object?
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;
}
})
to replace it with something like this:
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];
but this way every function in keyMap just gets triggered every time.
Upvotes: 4
Views: 76
Reputation: 386680
You could store the function calls in the object and call them if needed. For not known keys, a default function is returned.
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)());
Upvotes: 1
Reputation: 169194
Syntax errors in the original aside, just have the functions in the lookup table, then call them:
const keyMap = {
1: Store.get1,
2: get2,
3: get3,
4: get4,
5: get5,
};
Object.keys(data).forEach(key => {
return keyMap[key]();
});
Upvotes: 7