Я пытаюсь написать более идиоматический JavaScript.Я слышал от нескольких экспертов (например, Дугласа Крокфорда), что лучше избегать как можно большего числа операторов switch / case и сложных if / else, используя вместо этого объекты и функции.
Я пытаюсьвыяснить, как переписать этот блок if / else с использованием объектов и функций:
function testString(input){
if (input.match(/\.$/)){
return 'This string ends in a period.';
} else if (input.match(/!$/)){
return 'This string ends in an exclamation point.';
} else {
return 'This string has some other ending.';
}
}
Теперь я знаю, что вы можете заменить if / else объектом:
let response = {
'Now, it\'s a good time.':'This sentence ends in a period.',
'What up!':'This sentence ends in an exclamation point.'
};
return response[input];
ПроблемаУ меня есть то, что я знаю, как использовать эту структуру только с литералами.Как выполнить сопоставление с регулярным выражением в левой части (ключ) пары ключ-значение?
Это не работает:
let response = {
input.match(/\.$/):'This sentence ends in a period.',
input.match(/!$/):'This sentence ends in an exclamation point.'
};
return response[input];
Это дает мне ошибку:
Unexpected token, expected ","