2017-02-16 2 views
1

Ich habe mehrere Eingänge, 16 um genau zu sein. Ich habe einen langen Stück Code, isNaN() verwendet jede Eingabe zu überprüfen:Gruppe isNaN() Code Condensing

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; 
    } 

etc, etc.

Die Sache ist die, dass die Variablen „Qs_“ am Eingang ändern müssen abhängig. ZB: Wenn die Eingabe 1 ist, läuft Qs_ die Summe: Qs * 2 * 3; (Nicht der eigentliche Code, nur ein Beispiel).

Gibt es eine Möglichkeit, den isNaN() Teil meines Codes zu kondensieren?

Vielen Dank im Voraus.

+1

Sie ein Array für die Daten verwenden können. es ist leicht iterierbar und gut zu pflegen. –

+0

Wenn Sie mehrere Variablen mit demselben Namen/Werttyp haben, speichern Sie sie einfach in einem 'Array'. 'var Qs = neues Array (17); qs [1] = 0; ... ' – Cristy

+0

Würde das tatsächlich den Code verdichten? Es scheint so, als würde es das nicht wirklich reduzieren – Coder

Antwort

1

Speichern Sie Ihre Variablen in einem Array und Schleife über sie:

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

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

 
console.log(qs)

+0

Schön. Vielen Dank :) – Coder

0

@ Bill ist rechts- einem Array würde dies viel einfacher!

Also, wenn Sie hatten alle die Q wie definiert:

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

Dann könnten Sie gerade tun:

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

Diese [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Hier ist ein anschauliches Beispiel auf JSBin zurück: https://jsbin.com/kuvatiwafi/edit?js,console

0

Sie könnten eine implizite Umwandlung in num verwenden mit einem unären + und überprüfen Sie auf Echtheit. Andernfalls gib Null zurück.

Ich schlage vor, nur Variablen zu verwenden, die mit niedrigeren Zeichen beginnen. Der Start in Großbuchstaben wird normalerweise für die Funktion verlassen, die als Instanz oder Klassen verwendet werden kann (die meistens gleich ist).

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

 
console.log(array);

Verwandte Themen