旨在从数组中删除 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 true
或 false
)是否有效不管有没有数字,你都没有传递给它任何东西。
即使你使用得当,它也不会起作用,因为那样的话所有不是数字的值都会被过滤掉。
我建议使用这个:
array = array.filter(function (n) {
return n || n === 0;
});
要么 n
是真实的,要么是 0
。
isNaN
将数字作为参数。需要 isNaN(n)
然后,除非你想使用无穷大的数字,比如 -Infinity
和 Infinity
,我建议你只验证:
arr.filter(function (n) {
return isFinite(n);
});
NaN
不是有限的,所以它也会被过滤掉。
NaN
也有 属性,任何比较都会使它成为 return false
。这意味着如果 n
是 NaN
.
,n == n
将 return false
我需要从数组中删除除 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 true
或 false
)是否有效不管有没有数字,你都没有传递给它任何东西。
即使你使用得当,它也不会起作用,因为那样的话所有不是数字的值都会被过滤掉。
我建议使用这个:
array = array.filter(function (n) {
return n || n === 0;
});
要么 n
是真实的,要么是 0
。
isNaN
将数字作为参数。需要 isNaN(n)
然后,除非你想使用无穷大的数字,比如 -Infinity
和 Infinity
,我建议你只验证:
arr.filter(function (n) {
return isFinite(n);
});
NaN
不是有限的,所以它也会被过滤掉。
NaN
也有 属性,任何比较都会使它成为 return false
。这意味着如果 n
是 NaN
.
n == n
将 return false