首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何使一个大if/else语句更紧?

我如何使一个大if/else语句更紧?
EN

Stack Overflow用户
提问于 2018-09-03 16:28:57
回答 6查看 99关注 0票数 0

我有以下几点:

代码语言:javascript
复制
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);
} ...

它的运行时间比这长,因为有大量的预定义值。

checkObject的例子:

代码语言:javascript
复制
  var checkObject = [{
    value1: '19.1%',
    value2: '19.1%',
  }, {
   value1: '19.1%',
    value2: '19.1%',
  }, {
   value1: '19.1%',
    value2: '19.1%',
  }, ...

我想分解它,使它更高效,但是考虑到传递给runChecks()的数据有变化,我不知道如何管理它。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-09-03 16:37:50

实际上,您可以只使用for循环。

创建一个包含所有部分的数组对象。(稍后我会提供真正的javascript。但这里有一些半伪码)。

代码语言:javascript
复制
   var counter = 1;
    var N = something;
    var sectionArray = {section1, section2, section3, ..., sectionN};


   for(;counter<N; counter++){

   if(value === sectionArray[counter]){
  runChecks(checkObject[counter].value1, checkObject[counter].value2, rightAlign);
break;
   }

}
票数 1
EN

Stack Overflow用户

发布于 2018-09-03 16:33:05

用开关!

代码语言:javascript
复制
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更短,但它看起来更干净。

票数 2
EN

Stack Overflow用户

发布于 2018-09-03 16:40:03

例如,一种方法是使用循环。

代码语言:javascript
复制
let sections = ['section1', 'section2', 'section3', 'section4'];

for (let i = 0; i < sections.length; i++) {
    if (value === sections[i]) {
        runChecks(checkObject[1].value1, checkObject[1].value2, leftAlign);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52153501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档