Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If语句-如何减少代码量。(循环?数组?)Javascript_Javascript - Fatal编程技术网

If语句-如何减少代码量。(循环?数组?)Javascript

If语句-如何减少代码量。(循环?数组?)Javascript,javascript,Javascript,我有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++; } e

我有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++ }
var ex='1';
而(ex<11){
如果(q[ex]='1'){q[ex]='Yes';ex++;
}如果(q[ex]='0'){q[ex]='No';ex++;
}else{q[ex]='没有回答';ex++}
基本上我想消除4行代码x 10个变量。

[ex]是变量中的一个变量(为了表示q1,确定q1=是、否或未回答,然后将1添加到q[ex],q[ex]现在是q2

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

谢谢。

请参见

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

如果要删除If语句,可以使用具有索引的对象(在这里,数组自然地从“0”索引到“n-1”,执行相同的任务):

var q=[“0”,“1”,1,0,2,…];

对于(var i=0;i这不会一直限制它,但您可以创建一个函数

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有一个很好的例子。如果你能像那样改革你的变量,那是最好的方法。

使用switch-case语句怎么样?带结果的映射(数组)对我来说是最好的,这是可以理解的,可能是重复的,而不是10个变量,你只需要一个-一个数组。阅读原始的(磨坊的替代品……)我不确定答案,但是这个解释更适合我正在做的事情。谢谢。我相信有了这个解释,我可以将它调整到我脚本中需要的4或5个地方。我感谢编辑。我对第一部分有点迷茫。是的,我需要调整一下答案。你也在问使用数组而不是10个变量。[…]是a,当然可以动态填充数组。对于var q=etc,为什么有的是“0”,而有的只是0?这只是意味着:它对字符串、数字和所有其他将转换为“0”或“1”(数组的索引)的对象都有效当Being转换为酒店名称时。我使用了另一个答案,因为这有点超出我的理解能力,但是我会学到更多,并且相信我会接受你的答案。当然,这对我来说更有意义:)变量来自一个表单的帖子。我对javascript相当陌生,我试图让另一个答案起作用,但我想不出来。今天下午晚些时候我会处理这个问题。好的,没问题。Bergi的解决方案肯定是最节省空间的方法。我的解决方案可能更可读一些。因此,无论哪种方法使e对你来说最有意义。很高兴听到。如果答案是肯定的,请随意接受helpful@ben336:请重命名您的变量。“var”是一个保留字,我甚至怀疑这个函数是否能工作。
translate = function(v)
{
    if (v === '1') { 
        v = 'Yes'; 
    } else if (v === '2') { 
        v = 'No';
    } else { 
        v = 'Did Not Answer'; 
    }
  return var
}