isNaN()函数在javascript中有多个值

时间:2015-01-26 05:41:23

标签: javascript

可以在javascript中检查isNaN函数中的多个值吗? 像这样,

if(isNaN(tesvalue1,testvalue2,testvalue3)) {    
  //alert( );
} 

2 个答案:

答案 0 :(得分:4)

尝试此函数来测试某些值是否为NaN:

function testSomeNaN() {
     return Array.prototype.slice.call(arguments).some(isNaN);
}

更新1

测试所有值是否为NaN:

function testEveryNaN() {
     return Array.prototype.slice.call(arguments).every(isNaN);
}

更新2

如果您打算知道arguments数组中的哪些项是数字:

function filterNonNaN() {
    return Array.prototype.slice.call(arguments)
       .filter(function(x){return !isNaN(x);});
}

更新3

如果您拥有数组中的所有数据,请使用:

var arr = [1,2,NaN,3];
if(arr.some(isNaN)) {...} // some elements are NaN
// or
if([1,2,NaN,3].some(isNan)) {...}

if(arr.every(isNaN)) {...}// all elements are NaN
var arr2 = arr.filter(function(x){return !isNaN(x)}); // non-NaN elements



function testSomeNaN() {
         return Array.prototype.slice.call(arguments).some(isNaN);
    }

function testEveryNaN() {
         return Array.prototype.slice.call(arguments).every(isNaN);
    }

  	function filterNonNaN() {
    return Array.prototype.slice.call(arguments).filter(function(x){return !isNaN(x);});
}

document.getElementById("res11").textContent = testSomeNaN(1,2,NaN,4);
document.getElementById("res12").textContent = testSomeNaN(1,2,3,4);
document.getElementById("res13").textContent = testSomeNaN(NaN,NaN);

document.getElementById("res21").textContent = testEveryNaN(1,2,NaN,4);
document.getElementById("res22").textContent = testEveryNaN(1,2,3,4);
document.getElementById("res23").textContent = testEveryNaN(NaN,NaN);

document.getElementById("res31").textContent = filterNonNaN(1,2,NaN,4);

<p>Some NaN:</p>
<p>1,2,NaN,4: <span id="res11"></span></p>
<p>1,2,3,4: <span id="res12"></span></p>
<p>NaN,NaN: <span id="res13"></span></p>

<p>Every NaN:</p>
<p>1,2,NaN,4: <span id="res21"></span></p>
<p>1,2,3,4: <span id="res22"></span></p>
<p>NaN,NaN: <span id="res23"></span></p>

<p>Filter Non NaN:</p>
<p>1,2,NaN,4: <span id="res31"></span></p>
&#13;
&#13;
&#13;

答案 1 :(得分:3)

我想你在这之后:

如果你想测试所有的值是NaN那么使用&amp;&amp;操作者:

if(isNaN(tesvalue1) && isNaN(testvalue2) && isNaN(testvalue3)) {    
  //alert( );
} 

如果要测试NaN的任何值,则使用||操作者:

if(isNaN(tesvalue1) || isNaN(testvalue2) || isNaN(testvalue3)) {    
  //alert( );
} 

或者,如果您想要组合(添加)所有值并测试它是否为NaN:

if(isNaN(tesvalue1+testvalue2+testvalue3)) {    
  //alert( );
}