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

How to check existence of NaN keyword in an array?

我有以下数组

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

  }

首先将值转换为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
    }

  }

您可以检查类型 (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');
    }
}

在 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 值的奇数 属性 - 它不等于自身:

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 适合我:

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