我需要从数组中删除所有空值(null,undefined,'',NaN,false)EXCEPT 0。例如:[0,false,[],undefined,{},NaN,'Kevin'] => [0,[],{},'凯文'];
function removeBlank(array) {
array = array.filter(function (n) {
return (n !== undefined && n !== null && n !== false && n !== "" && isNaN()!= NaN); });
console.log( array );
}
然而,这仍然会返回NaN。
例如
removeBlank([0, NaN, undefined, false, '', null, 'Kevin']);
回报
[0,NaN,“凯文”]
我如何改进isNaN()!= NaN)删除NaN而不删除字符串,ZEROS或其他数字?
答案 0 :(得分:1)
isNaN()!= NaN
没有意义,isNaN
是一个接受参数并检查(返回true
或false
)的函数,如果它是有效数字的话,你没有传递任何东西。
即使您正确使用它,它也不会起作用,因为所有非数字的值都将被过滤掉。
我建议使用这个:
array = array.filter(function (n) {
return n || n === 0;
});
n
或者是0
。
答案 1 :(得分:0)
isNaN
将数字作为参数。需要isNaN(n)
然后,除非您想使用无限数字,例如-Infinity
和Infinity
,否则我建议您只需验证:
arr.filter(function (n) {
return isFinite(n);
});
NaN
不是有限的,所以它也会被过滤掉。
NaN
还具有以下属性:任何比较都会使其返回false
。这意味着如果n == n
为false
,n
将返回NaN
。