Group isNaN()Code Condensing

时间:2017-02-16 10:57:51

标签: javascript

我有多个输入,确切地说是16。我有一段冗长的代码,使用isNaN()来检查每个输入:

var Qs1 = 0;
var Qs2 = 0;
var Qs3 = 0;
var Qs4 = 0;
var Qs5 = 0;
var Qs6 = 0;
var Qs7 = 0;
var Qs8 = 0;
var Qs9 = 0;
var Qs10 = 0;
var Qs11 = 0;
var Qs12 = 0;
var Qs13 = 0;
var Qs14 = 0;
var Qs15 = 0;
var Qs16 = 0;

if(isNaN(Qs1)) {
      Qs1 = 0;
    }

    if(isNaN(Qs2)) {
      Qs2 = 0;
    }

    if(isNaN(Qs3)) {
      Qs3 = 0;
    }

    if(isNaN(Qs4)) {
      Qs4 = 0;
    }

    if(isNaN(Qs5)) {
      Qs5 = 0;
    }

等等。

事情是变量" Qs _"需要根据输入进行更改。例如:如果输入为1,则Qs_运行总和:Qs * 2 * 3; (不是实际的代码,只是一个例子)。

有没有办法可以压缩代码的isNaN()部分?

提前致谢。

3 个答案:

答案 0 :(得分:1)

将变量存储在一个数组中并循环遍历它们:



let qs = []
qs.push(0, 0, 0, 'a')

qs.forEach(function(q, i){
  if (isNaN(q)) qs[i] = 0
})

console.log(qs)




答案 1 :(得分:0)

@Bill是对的 - 使用数组会让这更容易!

因此,如果您的所有问题定义如下:

var qs = [0,0,'H',0,'E',0,'Y',0,0,0,0,0,0];

然后你可以这样做:

qs = qs.map(function(q){ return isNaN(q) ? 0 : q })

这将返回[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

这是JSBin上的一个实例:https://jsbin.com/kuvatiwafi/edit?js,console

答案 2 :(得分:0)

你可以使用一个隐含的转换来与一元+进行数字并检查是否有任务。否则返回零。

我建议只使用以较低字符开头的变量。大写的起始位置通常用于函数,可以用作实例或类(大致相同)。

var qs1 = 0,
    qs2 = -1,
    qs3 = '',
    qs4 = 'q',
    array = [qs1, qs2, qs3, qs4].map(function (a) { return +a || 0; });

console.log(array);