如何将嵌套三元运算符实现的timeConversion函数改写为if-else语句
嵌套三元运算符转等价if-else实现
原时间转换函数的核心是两层嵌套三元判断,逻辑按判断优先级拆解如下:
- 第一层判断:识别时间是PM时段还是AM时段
- PM时段分支:判断小时值是否为12
- 小时为12:小时值保持
"12"不变 - 小时不为12:将小时数值加12转成24小时制
- 小时为12:小时值保持
- AM时段分支:判断小时值是否为12
- 小时为12:将小时值替换为
"00"(对应24小时制的零点) - 小时不为12:保持原小时值不变
- 小时为12:将小时值替换为
- PM时段分支:判断小时值是否为12
完全等价的if-else版本代码如下:
function timeConversion(s) { const arr = s.slice(0, 8).split(":"); if (s.indexOf("PM") > -1) { if (arr[0] == 12) { arr[0] = "12"; } else { arr[0] = Number(arr[0]) + 12; } } else { if (arr[0] == 12) { arr[0] = "00"; } else { arr[0] = arr[0]; } } let result = arr.join(":"); console.log(result); }
改写说明:代码完全保留了原函数的弱相等判断逻辑,没有修改任何分支的赋值规则,和原嵌套三元版本的执行结果完全一致,不存在行为差异。
内容的提问来源于stack exchange,提问作者Shoaib
相关产品推荐
相关产品推荐

