如何检查 JavaScript 数组中是否存在 NaN 关键字
javascriptweb developmentobject oriented programming更新于 2025/10/2 15:08:17
我们有一个包含真值和假值的元素数组。我们的工作是编写一个函数,该函数返回一个数组,其中包含原始数组中为 NaN 的元素的索引。
NaN !== NaN
NaN 的数据类型实际上是数字。尽管 NaN 是一个假值,但它具有其他数据类型或变量所没有的特殊属性。表达式 NaN === NaN 会产生假值。而且只有在 NaN 的情况下才会产生假值。
因此,我们可以利用这种行为来挑选 NaN 值索引。这段代码将是 −
const arr = [7, 1, "123abc", undefined, NaN, 78, NaN, null, "aes", NaN,
'', null, NaN];
const pickNaN = (arr) => {
return arr.reduce((acc, val, ind) => {
if(val !== val){
acc.push(ind);
};
return acc;
}, []);
};
console.log(pickNaN(arr));
使用 isNaN() / Number.isNaN()
isNaN() 函数根据提供的值是否为 NaN 或是否可以强制转换为 NaN 返回 true 或 false。而 Number.isNaN() 函数仅在提供的值实际上是 NaN 时才返回 true。
因此,Number.isNaN() 是一种比 isNaN() 更可靠的检查 NaN 的方法。代码输出的差异如下所示。
示例
const arr = [7, 1, "abc", undefined, NaN, 78, NaN, null, "aes", NaN, '',
null, NaN];
const pickNaN = (arr) => {
return arr.reduce((acc, val, ind) => {
if(Number.isNaN(val)){
acc.reliableWay.push(ind);
};
if(isNaN(val)){
acc.unreliableWay.push(ind);
}
return acc;
}, {
reliableWay: [],
unreliableWay: []
});
};
console.log(pickNaN(arr));
此代码准备了两个数组,一个使用 Number.isNaN(),另一个使用 isNaN()。
输出
输出将为 −
{
reliableWay: [ 4, 6, 9, 12 ],
unreliableWay: [ 2, 3, 4, 6, 8, 9, 12]
}
我们可以清楚地看到 isNaN() 如何将许多非 NaN 值计算为 NaN。这就是为什么 Number.isNaN() 是一种更可靠的方法。
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

