Freecodecamp: 篝火:Falsy Bouncer - 矛盾的指令

创建于 2015-12-15  ·  3评论  ·  资料来源: freeCodeCamp/freeCodeCamp

挑战篝火:Falsy Bouncer有问题。
用户代理是: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36

Falsy Bouncer 的说明表明 Falsy 值具有各种类型,包括NaN
第一个测试要求函数调用bouncer([7, "ate", "", false, 9])应该返回[7, "ate", 9]
但是请注意,字符串“ate”NaN,因此它不应包含在结果数组中。

因此,似乎没有办法使用相同的代码块通过测试 1 和测试 3,它们是相互排斥的答案。

我的代码:

function bouncer(arr) {

  arr = arr.filter(function(val){
    if (val === false || val === null || val === undefined || val === "" || val === 0 || isNaN(val)) return false;
    return true;
  });

  return arr;
}

bouncer([false, null, 0, NaN, undefined, ""]);

最有用的评论

而且,从技术上讲,您可以使用Boolean函数为您完成此操作,因此可以解决问题:
return arr.filter(Boolean) ,因为布尔值采用真/假值并返回真或假。

所有3条评论

如果我在这里误解了一些东西,请提前道歉。

NaN是变量可以具有的实际值,它是错误的。 "ate"不是数字, isNan("ate")会返回true,但是"ate"值不是falsey,只有NaN的特定值是falsey。 falsey 值的美妙之处(和偶尔的错误来源)是你不需要像你的代码那样明确地寻找它们,因为每当需要一个布尔值时,Javascript 都会将它们强制转换为 false 的布尔值。 这意味着您的过滤器函数的代码可以是这样的:

arr = arr.filter(function(val){
  return val;
});

感谢和快乐编码!

而且,从技术上讲,您可以使用Boolean函数为您完成此操作,因此可以解决问题:
return arr.filter(Boolean) ,因为布尔值采用真/假值并返回真或假。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

trashtalka3000 picture trashtalka3000  ·  3评论

MichaelLeeHobbs picture MichaelLeeHobbs  ·  3评论

imhuyqn picture imhuyqn  ·  3评论

danielonodje picture danielonodje  ·  3评论

robwelan picture robwelan  ·  3评论