2017-02-16 2 views
1

У меня есть несколько входов, если быть точным. У меня есть длинный кусок кода, который использует IsNaN(), чтобы проверить каждый вход:Группа 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() моего кода?

Заранее спасибо.

+1

вы можете использовать массив для данных. он прост и удобен в обслуживании. –

+0

Если у вас несколько переменных с одинаковым именем/значением, просто сохраните их в 'Array'. 'var Qs = новый массив (17); qs [1] = 0; ... ' – Cristy

+0

Будет ли это на самом деле конденсировать код? Кажется, что это фактически не уменьшило бы его так. – Coder

ответ

1

Храните переменные в массиве и петля над ними:

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

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

 
console.log(qs)

+0

Ницца. Огромное спасибо :) – Coder

0

@Bill является право-, используя массив будет сделать это намного проще!

Так что, если бы вы все ваши Q, определенный как:

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

0

Вы можете использовать литье имплицидов для num ber с унарным + и проверьте надежность. В противном случае возвращаем ноль.

Предлагаю использовать только переменные, начинающиеся с нижних символов. Стартовый запуск обычно остается для функции, которая может использоваться как экземпляр или классы (которые в основном одинаковы).

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

 
console.log(array);

Смежные вопросы