代码之家  ›  专栏  ›  技术社区  ›  Muflix

如何检查数组中是否存在NaN关键字?[副本]

  •  0
  • Muflix  · 技术社区  · 10 年前

    我有以下数组

    var arr = [7, 1, "abc", undefined, NaN];
    

    但如何检查arr中的值是否为NaN?

    for (i=0; i < arr.length; i++){
    
        // check if array value is false or NaN
        if (arr[i] === false || arr[i] === NaN) {
            // do something
        }
    
      }
    

    知道吗?我试过了 isNaN(arr[i]) 功能,但它也不工作。

    5 回复  |  直到 10 年前
        1
  •  4
  •   Hassan    10 年前

    对我来说这有效吗??

    for (i=0; i < arr.length; i++){
    
        // check if array value is false or NaN
        if (arr[i] === false || Number.isNaN(arr[i]) ) {
            console.log("NaN");
        }
    
      }
    
        2
  •  3
  •   Nina Scholz    10 年前

    你可以检查一下类型( typeof NaN === 'number' )和 isNaN 对于 NaN 价值

    var arr = [7, 1, "abc", undefined, NaN], i;
    for (i = 0; i < arr.length; i++){
        if (typeof arr[i] === 'number' && isNaN(arr[i])) {
            console.log('Element ' + i + ' is NaN');
        }
    }

    或 check if the value is unequal to itself .

    var arr = [7, 1, "abc", undefined, NaN], i;
    for (i = 0; i < arr.length; i++){
        if (arr[i] !== arr[i]) {
            console.log('Element ' + i + ' is NaN');
        }
    }
        3
  •  1
  •   smuff    10 年前

    在ECMAScript 6中,您可以使用数字。isNaN函数:

    var arr = [7, 1, "abc", undefined, NaN];
    
    for (i=0; i < arr.length; i++){
    
        // check if array value is false or NaN
        if (arr[i] === false || Number.isNaN(arr[i])) {
            console.log("NaN found at place " + i);
        }
    
      }
    

    如果需要在ECMAScript 5中工作,那么isNaN函数的问题是它正在检查该值是否能够强制转换为数字。相反,您可以使用NaN值的奇数属性-它不等于自身:

    var arr = [7, 1, "abc", undefined, NaN];
    
    for (i=0; i < arr.length; i++){
    
        // check if array value is false or NaN
        if (arr[i] === false || arr[i] != arr[i]) {
            console.log("NaN found at place " + i);
        }
    
      }
    
        4
  •  1
  •   ErkkiRuohtula    10 年前

    isNan为我工作:

    for (i=0; i < arr.length; i++){
        // check if array value is false or NaN
        if (isNaN(arr[i])) {
            console.log("Not a number at index " + i + ": "+arr[i]);
        }
    }
    

    打印(在node.js中):

    Not a number at index 2: abc
    Not a number at index 3: undefined
    Not a number at index 4: NaN
    
        5
  •  1
  •   intekhab    10 年前

    首先将值转换为String。然后检查 value == 'NaN'

    for (i=0; i < arr.length; i++){
    
        // check if array value is false or NaN
        if (arr[i] === false || (arr[i] != undefined && typeof(arr[i]) == "number" && arr[i].toString() === 'NaN')) {
            // do something
        }
    
      }