2017-06-11 7 views
0

Ich habe eine Funktion showWorthSum() geschrieben, um die Summe eines Arrays zurückzugeben. Es tut, aber ich habe auch eine Bedingung gestellt, wenn ein Element eines Arrays eine Zahl ist, dann sollte es nur berechnet werden und Ruhe sollte übersprungen werden, aber immer noch, es geht in den if-Block im Falle von NaN und macht das ganze Ergebnis NaN. Warum ?Warum, wenn die Bedingung nicht ausgeführt werden kann?

function addWorth() 
{  
    var table1= document.getElementById("tableNetWorths"); 

    var rowCount1= table1.rows.length; 

    //var row1= table1.insertRow(rowCount1); 

    var arr= []; 

    for(var count = 0; count < rowCount1; count++) 
    {  
     arr.push(table1.rows[count].cells[1].innerHTML);   
    } 

    arr.shift(); 
    return arr; 
} 

function showWorthSum() 
{ 
    var returnedArr= addWorth(); 

    //returnedArr.push(addWorth()); 

    totalWorth= 0; 

    var arrCount= returnedArr.length; 

    for(var count = 0; count < arrCount; count++) 
    {  
      if(typeof(parseInt(returnedArr[count])) == 'number') 
      { 
       totalWorth= parseInt(totalWorth)+ parseInt(returnedArr[count]); 
       //document.write(returnedArr[count]); 

      } 
    } 

    return parseInt(totalWorth); 
} 

Array: {100,200. 'Asdadasd', 322, 22}

Button:

<button class="btn btn-primary" onclick="document.write(showWorthSum())" type="button">Show Sum</button> 

Antwort

1

Versuchen Sie stattdessen isNaN(parseInt(returnedArr[count])) === false

Obwohl NaN definitions Not A Number ist, typeof NaN ist number

So zu überprüfen, ob eine Variable ist eine Nummer verwenden isNaN(value) === false oder !isNaN(value)

Beispiele:

  • isNaN(5) => false
  • isNaN("5") => false
  • isNaN("-5") => false
  • isNaN(true) => false
  • isNaN(false) => false
  • isNaN({}) => true
  • isNaN(NaN) => true
  • isNaN("test") => true
  • isNaN("5test") => true
  • isNaN("test5") => true

So könnte man auch !isNaN(returnedArr[count]) verwenden Sie es kürzer

+0

also was ist die richtige Syntax? – Covert

+0

Sorry, aber immer noch NaN – Covert

+0

Funktioniert immer noch NaN – Covert

1

Statt „typeof (parseInt (returnedArr [count])) == 'Zahl' zu machen "können Sie isFinite (returnedArr [count]) verwenden.

isFinite('foo') 
false 

isFinite('10') 
true 

isFinite(10) 
true 

isFinite('898.0900') 
true 
Verwandte Themen