Я приведу вам пример, чтобы вы могли рассмотреть возможность рефакторинга вашего кода в соответствии с этим решением:
const DRINKS = [
{
name: "BestDrink",
getDrink: () => {
return "BestDrink on lemon"; //whatever you are willing to;
}
}, {
name: "WorstDrink",
getDrink: () => {
return "No alcohol drink"; //whatever you are willing to;
}
}
];
function prepareDrink(name) {
return DRINKS.find(drink => drink.name === name).getDrink();
}
console.log(prepareDrink('WorstDrink')); //you get what you defined in returns in your DRINKS array.
Конечно, вам нужно будет рассмотреть случай, если есть вероятность 2 или болеенапитки с тем же именем, но с этим вопросом дело обстоит иначе.
edit: небольшие исправления, чтобы код работал:)
Схожий, но немного другой подход:
const DRINKS = {
getDrink: name => {
const foundDrink = DRINKS.shelf.find(drink => drink.name === name);
return foundDrink ? foundDrink.prepare() : "Got nothing but water"
},
shelf: [
{
name: "BestDrink",
prepare: () => {
return "BestDrink on lemon"; //whatever you are willing to;
}
}, {
name: "WorstDrink",
prepare: () => {
return "No alcohol drink"; //whatever you are willing to;
}
}
]
};
console.log(DRINKS.getDrink('BestDrink')); //you get what you defined in returns in your DRINKS array.