My vote would go for polymorphism, unfortunately much JavaScript code out there is not written following good OOP principles. So if you just need to work with given code base but not making a revolution there is a neat way to go:
const actions = { value1: actionX, value2: actionY, value3: actionZ }; actions[value]();Where action X, Y, Z are functions.
Of course it's good to add some check for undefined value, like:
actions[value] && actions[value]();
Or an error might be thrown if no mapping found as follows:
const action = actions[value] ? actions[value] : (value) => throw new Error('No action mapped for value: ' + value); action(value);Well, that's it. I believe it helps to reduce clutter in code. Just compare it to a typical switch:
switch (value) { case 'value1': actionX(); break; case 'value2': actionY(); break; case 'value3': actionZ(); break; default: throw new Error('No action mapped for value: ' + value) }
Exactly the same idea can be done in Groovy, Java and other languages if you are not up for polymorphism on a given case. Although for some languages with no functional paradigm, like Java before version 8, you may need to create some sort of Action class definition.