【发布时间】:2019-03-12 02:16:35
【问题描述】:
我在freecodecamp上做算法挑战,他们提供的解决方案真的很整洁:
function bouncer(arr) {
return arr.filter(Boolean);
}
不幸的是,作为一个菜鸟并且没有考虑那个高阶函数,我创建了这个冗长的怪物:
function bouncer(arr) {
let truthyArray = [];
let falsyArray = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] == false || arr[i] === null || arr[i] === NaN || arr[i] === undefined) {
falsyArray.push(arr[i]);
} else {
truthyArray.push(arr[i]);
}
}
return truthyArray;
}
它似乎在之前的测试中完成了工作。然而,NaN 并没有配合。
bouncer([1, null, NaN, 2, undefined])
返回:
[1, NaN, 2]
关于如何测试 NaN 的任何想法?
【问题讨论】:
-
bouncer([false, null, 0, NaN, undefined, ""]) returns: [1, NaN, 2]嗯?1和2s 是从哪里来的?我无法复制 -
这一行
if (arr[i] == false || arr[i] === null || arr[i] === NaN || arr[i] === undefined)也可以像if ( ! arr[i] )一样完成。你几乎检查了那里的所有假值。 -
抱歉,修改并更正了函数调用,谢谢!
标签: javascript arrays nan