我有以下几点:
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的例子:
var checkObject = [{
value1: '19.1%',
value2: '19.1%',
}, {
value1: '19.1%',
value2: '19.1%',
}, {
value1: '19.1%',
value2: '19.1%',
}, ...我想分解它,使它更高效,但是考虑到传递给runChecks()的数据有变化,我不知道如何管理它。
发布于 2018-09-03 16:37:50
实际上,您可以只使用for循环。
创建一个包含所有部分的数组对象。(稍后我会提供真正的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;
}
}发布于 2018-09-03 16:33:05
用开关!
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更短,但它看起来更干净。
发布于 2018-09-03 16:40:03
例如,一种方法是使用循环。
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);
}
}https://stackoverflow.com/questions/52153501
复制相似问题