旨在从数组中删除 NaN 的代码,仍然是 returns NaN JS

code designed to remove NaN from array, still returns NaN JS

我需要从数组中删除除 0 之外的所有空值(null、undefined、''、NaN、false)。例如:[0, false, [], undefined, {}, NaN, 'Kevin'] => [0, [], {}, 'Kevin'];

function removeBlank(array) {
  array = array.filter(function (n) {
    return (n !== undefined && n !== null && n !== false && n !== "" && isNaN()!= NaN); });
  console.log( array );
}

然而这仍然是 returns 一个 NaN。 例如 removeBlank([0, NaN, undefined, false, '', null, 'Kevin']); returns [0, 南, "Kevin"]

如何改进 isNaN()!= NaN) 以在不删除字符串、ZEROS 或其他数字的情况下删除 NaN?

isNaN()!= NaN 没有意义,isNaN 是一个函数,它接受一个参数并检查(return truefalse)是否有效不管有没有数字,你都没有传递给它任何东西。

即使你使用得当,它也不会起作用,因为那样的话所有不是数字的值都会被过滤掉。

我建议使用这个:

array = array.filter(function (n) {
    return n || n === 0;
});

要么 n 是真实的,要么是 0

isNaN 将数字作为参数。需要 isNaN(n)

然后,除非你想使用无穷大的数字,比如 -InfinityInfinity,我建议你只验证:

arr.filter(function (n) {
   return isFinite(n);
});

NaN 不是有限的,所以它也会被过滤掉。 NaN 也有 属性,任何比较都会使它成为 return false。这意味着如果 nNaN.

n == n 将 return false