将巨大的 if 语句变量重构为数组



我想将这些变量重构为一个数组,因为它看起来很臃肿,但不知道这样做的最佳做法,因为它们太多了。请看一看,让我知道你认为我应该怎么做。


VS_group = "group";
if (VS_group == "group") {
V1_IC11 = getAnswerCode('INBOARD_111_COUNT');
V1_IC12 = getAnswerCode('INBOARD_112_COUNT');
V1_IC13 = getAnswerCode('INBOARD_113_COUNT');
V1_IC14 = getAnswerCode('INBOARD_114_COUNT');
V1_IC15 = getAnswerCode('INBOARD_115_COUNT');
V1_IC16 = getAnswerCode('INBOARD_116_COUNT');
V1_IC17 = getAnswerCode('INBOARD_117_COUNT');
V1_IC18 = getAnswerCode('INBOARD_118_COUNT');
V1_IC19 = getAnswerCode('INBOARD_119_COUNT');
V1_IC20 = getAnswerCode('INBOARD_120_COUNT');
V1_IC31 = getAnswerCode('INBOARD_131_COUNT');
V1_IC32 = getAnswerCode('INBOARD_132_COUNT');
V1_IC33 = getAnswerCode('INBOARD_133_COUNT');
V1_IC34 = getAnswerCode('INBOARD_134_COUNT');
V1_IC35 = getAnswerCode('INBOARD_135_COUNT');
V1_IC36 = getAnswerCode('INBOARD_136_COUNT');
V1_IC37 = getAnswerCode('INBOARD_137_COUNT');
V1_IC38 = getAnswerCode('INBOARD_138_COUNT');
V1_IC39 = getAnswerCode('INBOARD_139_COUNT');
V1_IC40 = getAnswerCode('INBOARD_140_COUNT');
V2_IC11 = getAnswerCode('INBOARD_211_COUNT');
V2_IC12 = getAnswerCode('INBOARD_212_COUNT');
V2_IC13 = getAnswerCode('INBOARD_213_COUNT');
V2_IC14 = getAnswerCode('INBOARD_214_COUNT');
V2_IC15 = getAnswerCode('INBOARD_215_COUNT');
V2_IC16 = getAnswerCode('INBOARD_216_COUNT');
V2_IC17 = getAnswerCode('INBOARD_217_COUNT');
V2_IC18 = getAnswerCode('INBOARD_218_COUNT');
V2_IC19 = getAnswerCode('INBOARD_219_COUNT');
V2_IC20 = getAnswerCode('INBOARD_220_COUNT');
V2_IC31 = getAnswerCode('INBOARD_231_COUNT');
V2_IC32 = getAnswerCode('INBOARD_232_COUNT');
V2_IC33 = getAnswerCode('INBOARD_233_COUNT');
V2_IC34 = getAnswerCode('INBOARD_234_COUNT');
V2_IC35 = getAnswerCode('INBOARD_235_COUNT');
V2_IC36 = getAnswerCode('INBOARD_236_COUNT');
V2_IC37 = getAnswerCode('INBOARD_237_COUNT');
V2_IC38 = getAnswerCode('INBOARD_238_COUNT');
V2_IC39 = getAnswerCode('INBOARD_239_COUNT');
V2_IC40 = getAnswerCode('INBOARD_240_COUNT');
}

如果你制作一个代码数组,你可以将其映射到这样的答案:

const codesINeed = ["INBOARD_111_COUNT", "INBOARD_112_COUNT"];// (etc)
const answerCodes = codesINeed.map(getAnswerCode);
// answerCodes is an array of answer codes with the same order as codesINeed

你可以做一个这样的数组:

let vs_group = 
[
{
"name": "V1_IC11",
"value": "INBOARD_111_COUNT"
},
{
"name": "V1_IC12",
"value": "INBOARD_112_COUNT"
} 
...
]

您可以将所有代码放在一个数组中,并将其映射为每个代码创建一个对象,其中包含代码和相关答案。这样,您就不会忘记哪个答案与哪个代码一起使用。

// sample function for demo
function getAnswerCode(x) {
return "answer for " + x;
}
const codes = ['INBOARD_111_COUNT',
'INBOARD_112_COUNT',
'INBOARD_113_COUNT'] // and the rest
const answers = codes.map(code => { return { code, answer: getAnswerCode(code)  }})
console.log(answers);
// You can later get what you need using filter:
const answerFor112 = answers.filter(a => a.code === 'INBOARD_112_COUNT')[0].answer;
console.log("Sample answer requested: " + answerFor112);

只需记下使用两次的两个范围。然后迭代这些范围并将结果保存到对象中以供参考。

const lower = [11, 31];
const upper = [20, 40];
const vs = [1, 2];
const vsGroup = {};
for (let vn = 0; vn < vs.length; vn++) {
for (let i = 0; i < lower.length; i++) {
for (let j = lower[i]; j <= upper[i]; j++) {
vsGroup["V" + vs[vn] + "_IC" + j] = 'getAnswerCode(INBOARD_' + vs[vn] + '' + j + '_COUNT)';
}
}
}
console.log(vsGroup);

(getAnswerCode 保留为字符串,只是为了显示调用的外观(

最新更新