0

我有 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 = Yes、No 或 Did Not Answer,然后将 1 添加到 q[ex],现在是 q2....

我知道 [] 可能不正确,我只是不知道如何以可以理解的方式解释这一点。

谢谢你。

4

2 回答 2

1

请参阅替代一百万个 IF 语句的回答

while 循环当然是一件好事,你应该真正使用数组 q而不是单个变量。您也可以使用 for 循环。qN

如果你想消除 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", ...]
于 2012-06-27T17:52:29.240 回答
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 有一个很好的例子。如果你能像那样改革你的变量,那是最好的方法。

于 2012-06-27T17:57:55.903 回答