【发布时间】:2021-07-13 13:05:39
【问题描述】:
我要折射一段代码
if (res1 && res1.e > maxEnergy) {
maxRes = res1;
maxEnergy = res1.e;
}
if (res2 && res2.e > maxEnergy) {
maxRes = res2;
maxEnergy = res2.e;
}
if (res3 && res3.e > maxEnergy) {
maxRes = res3;
maxEnergy = res3.e;
}
有没有最好的方法在较短的段中完成这段代码? 使用 Object 字面量或 switch 语句?
【问题讨论】:
-
res1 && res1.e > maxEnergy=>res1?.e > maxEnergy -
实际上,我希望将所有三个 if 合并为一个简短的版本,而不仅仅是它们的条件
-
可能是
Math.max(...[res1?.e || 0, res2?.e || 0, res3?.e || 0, maxEnergy])之类的 -
就这样吧。至少坚持的人以后不必绞尽脑汁来理解应该会发生什么。我更喜欢每天保持干净/注释/可理解的代码而不是缩小的简写单行。
-
如果可能的话,我更喜欢循环和数组:
[res1, res2, res3].forEach(res => {if (res?.e > maxEnergy) { maxRes = res; maxEnergy = res.e; });
标签: javascript switch-statement object-literal