gpt4 book ai didi

javascript - 如何将此 if/else 语句转换为惯用的 JavaScript?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:53:23 26 4
gpt4 key购买 nike

我正在尝试编写更惯用的 JavaScript。我从几位专家(如 Douglas Crockford)那里听说,最好的做法是尽可能避免 switch/case 和复杂的 if/else 语句,而是使用对象和函数。

我正在尝试弄清楚如何使用对象和函数重写这个 if/else block :

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 ","

最佳答案

您可以创建一个查找表(响应模式):

 const responses = [
{ pattern: /\.$/, response: "This sentence ends in a period", },
//...
{ pattern: /.*/, response: "Nothing special", }
];

return responses.find(it => input.match(it.pattern)).response;

但老实说:在几行代码中投入了过多的精力,而是着眼于大局。无论您在这里使用 if/else 还是上面的解决方案都没有关系。

关于javascript - 如何将此 if/else 语句转换为惯用的 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55677640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com