我编写了一个函数 showWorthSum()来返回数组的总和。确实如此,但是如果一个数组的元素是一个数字,那么它也会设置一个条件,那么它应该只计算并且应该跳过rest,但是在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。 &#39; asdadasd&#39;,322,22}
按钮:
<button class="btn btn-primary" onclick="document.write(showWorthSum())" type="button">Show Sum</button>
答案 0 :(得分:1)
请改为isNaN(parseInt(returnedArr[count])) === false
虽然根据定义NaN
为Not A Number
,但typeof NaN
为number
因此,要检查变量是否为数字,请使用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])
缩短
答案 1 :(得分:1)
而不是“typeof(parseInt(returnedArr [count]))=='number'”,你可以使用isFinite(returnedArr [count])。
isFinite('foo')
false
isFinite('10')
true
isFinite(10)
true
isFinite('898.0900')
true