javascript - 如何使大型 if/else 语句更严格?
问题描述
我有以下内容:
if (value === section1) {
runChecks(checkObject[1].value1, checkObject[1].value2, leftAlign);
} else if (value === section2) {
runChecks(checkObject[2].value1, checkObject[2].value2, rightAlign);
} else if (value === section3) {
runChecks(checkObject[3].value1, checkObject[3].value2, leftAlign);
} else if (value === section4) {
runChecks(checkObject[4].value1, checkObject[4].value2, rightAlign);
} else if (value === section5) {
runChecks(checkObject[5].value1, checkObject[5].value2, leftAlign, true);
} else if (value === section6) {
runChecks(checkObject[6].value1, checkObject[6].value2, rightAlign);
} ...
它运行的时间比这更长,因为有大量预定义的值。
检查对象示例:
var checkObject = [{
value1: '19.1%',
value2: '19.1%',
}, {
value1: '19.1%',
value2: '19.1%',
}, {
value1: '19.1%',
value2: '19.1%',
}, ...
我想将其分解并提高效率,但鉴于传递给 runChecks() 的数据存在差异,我不确定如何管理它。
解决方案
使用开关!
switch(value){
case section1:
runChecks(checkObject[1].value1, checkObject[1].value2, leftAlign);
break
case section2:
runChecks(checkObject[2].value1, checkObject[2].value2, rightAlign);
break
...
}
它并不比使用更短,if / else if / else
但看起来更干净。
推荐阅读
- r - 是否有用于检查 GeoJSON 对象(多边形或多多边形)是否包含点的 R 函数?以及哪个 GeoJSON 对象容器指向哪个
- android - 为什么我的代码没有在 Android 8+ (Oreo+) 中启动我的应用程序的固定快捷方式?
- uwp - UWP DataGrid 上的糟糕表现
- python-3.x - 如何使用来自数据库而不是 .txt 的数据进行动态绘图?
- c# - 在 .NET Core 内置 DI 容器中为 AddScoped 服务实现自定义处置
- powershell - Powershell CSV按字段分组数据
- php - Laravel 字段“状态”没有默认值,我在相关帖子中尝试过答案无济于事
- ruby-on-rails - 使用实例双精度测试 ActiveJob 重试
- android - 从计时器启动 MediaPlayer
- vuejs2 - 获取 [Vue 警告]:未知的自定义元素:
即使 bootstrap-vue 已注册