我有10个变量。 q1到q10
我的脚本如下:
if (q1 == '1') { q1 = 'Yes';
} else if (q1 == '2') { q1 = 'No';
} else { q1 = 'Did Not Answer'; }
我已经为所有10输入了这个。我不确定是否可以在此变量中插入另一个变量。
我试图做这样的事情:
var ex = '1';
while (ex < 11) {
if (q[ex] == '1') { q[ex] = 'Yes'; ex++;
} else if (q[ex] == '0') { q[ex] = 'No'; ex++;
} else { q[ex] = 'Did Not Answer'; ex++ }
基本上我想要消除4行代码x 10个变量。
[ex]是变量内部的变量(表示q1,确定q1 =是,否,或者没有回答,然后将q加到1 [ex],现在是q2 ....
我知道[]可能不正确,我只是不知道如何以一种可以理解的方式解释这一点。
谢谢。
答案 0 :(得分:1)
请参阅my answer上的Alternative to a million IF statements。
while循环当然是一件好事,你应该使用array q
而不是单变量qN
。您也可以使用for循环。
如果要释放if语句,可以使用带索引的对象(这里是一个数组,自然地从“0”到“ n-1 ”索引,是同样的工作):
var q = ["0", "1", 1, 0, 2, ...];
for (var i=0; i<q.length; i++)
q[i] = ["No", "Yes"][q[i]] || "Did Not Answer";
// result for q:
["No", "Yes", "Yes", "No", "Did Not Answer", ...]
答案 1 :(得分:1)
这不会一直限制它,但你可以创建一个函数
translate = function(v)
{
if (v === '1') {
v = 'Yes';
} else if (v === '2') {
v = 'No';
} else {
v = 'Did Not Answer';
}
return var
}
然后为每个变量调用translate(q1)等。这会将它移到~16行而不是40行,避免重复代码。
你也可以将你的变量改造成一个变量数组并像这样快速循环,但是我不知道它们的定义在哪里以及它对你有用。 编辑:Bergi有一个很好的例子。如果你可以改变你的变量,这是最好的方法。