如何检查数组中是否存在NaN关键字

How to check existence of NaN keyword in an array?

本文关键字:是否 存在 NaN 关键字 数组 何检查 检查      更新时间:2023-09-26

我有以下数组

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])功能,但它也不工作。

对我来说这是工作吗??

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

您可以检查类型(typeof NaN === 'number')和isNaNNaN值。

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

或者检查值是否与自身不相等

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

在ECMAScript 6中你可以使用Number。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值的odd属性——它不等于它自己:

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

isNan works for me:

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

首先将值转换为toString。然后检查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
    }
  }