js 这种多个if的写法如何优化
statusText(value) {
if (value === '0') {
return '你好'
}
if (value === '1') {
return '我好'
}
if (value === '2') {
return '他好'
}
if (value === '3') {
return '大家好'
}
if (value === '4') {
return '你不好'
}
if (value === '5') {
return '我不好'
}
像这样子的写法,如何优化到最精简,不用switch
感谢各位大哥大姐的解答,小弟感激不尽!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
查找表。
@林枫 的答案已经说明一两种情况下的用法:
一种是“键”和“内容”有序的情况下,可以直接使用数组
如果有序,但有偏移,比如
"你好"
对应的不是"0"
,而是"10"
(后面的顺延),可以在取值的时候算偏移当然状态一般偏移 10 的可能性不大,但是偏移 1 是有可能的(无 0 值)。
如果是有序字母,也可以做类似的运算,这里就不举例了
接下来,要处理无序的情况,这种情况直接定义映射表对象就好,@林枫 的第 2 个答案就是
为了映射表可以多次使用,可以使用闭包(上面数组也可以这样):
接下来还要处理一个问题。我注意到问题中是使用的
===
精确相等,按这个逻辑,传入的数字 1 是不能匹配到内容的,只有字符串"1"
才能。要做类型匹配的映射表,不能用普通的数组或者对象,需要使用Map
对象我的思路:
使用map对象来存放获取的,经常用来当字典使用。
参考ts的枚举我觉得也可以,挺有意思的,其本质还是
对象
说简单点就是使用“策略模式”