我试图从数组中删除所有虚假值。
我知道这可能不是这个问题的最佳解决方案,但考虑到我想使用这个开关,有没有办法去除NaN?
function bouncer(arr) {
arr=arr.filter(removeFalsy);
return arr;
}
function removeFalsy(val){
switch(val){
case false: return false;
case null: return false;
case 0: return false;
case "" :return false;
case undefined: return false;
case NaN: return false; // <=== NaN
default: return true;
}
}
bouncer([false, null, 0, NaN, undefined, ""]);
//result is: [ NaN ]
bouncer([1, null, NaN, 2, undefined]);
//result is: [ 1, NaN, 2 ]
答案 0 :(得分:6)
有时你只需要保持简单:
function bouncer(arr) {
return arr.filter(Boolean);
}
console.log(bouncer([false, null, 0, NaN, undefined, ""]));
console.log(bouncer([1, null, NaN, 2, undefined]));
&#13;
答案 1 :(得分:4)
NaN
不等于任何内容,因此您需要使用Number.isNaN。
正如评论中所解释的那样,全球isNaN不是一个好主意。
感谢你指出这一点。
答案 2 :(得分:0)