我写了一个函数showWorthSum()返回一个数组的总和。可以,但是我还提出了一个条件,如果数组的元素是一个数字,则仅应计算它,而应该跳过其余部分,但是如果是NaN,它将进入if块内部,并使整个结果为NaN。为什么呢

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


数组:{100.200。 'asdadasd',322,22}

按键:

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

最佳答案

试试这个代替isNaN(parseInt(returnedArr[count])) === false

尽管根据定义NaNNot A Number,但typeof NaNnumber

因此要检查变量是否为数字,请使用isNaN(value) === false!isNaN(value)

例子:


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


因此,您也可以使用!isNaN(returnedArr[count])将其缩短

关于javascript - 为什么条件无法执行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44483192/

10-11 11:06