【问题标题】:How does this function remove all falsy values from an array?此函数如何从数组中删除所有虚假值?
【发布时间】:2017-01-27 12:55:28
【问题描述】:
function bouncer( arr ){
return arr.filter( function( value ){
    return value;
});

此函数从数组中删除所有虚假值。我不明白它是如何工作的。过滤器是否自动只返回非虚假值?

【问题讨论】:

标签: javascript function


【解决方案1】:

因为filter 使用数组中的每个值调用回调,并构建一个新数组,其中包含filter 为其返回真值的值。所以从回调返回的值只保留真值(非假值),因为当回调返回一个假值时,filter 将该条目留在它构建的数组之外。

有关filter 工作原理的详细信息,请参阅MDN(可读)或the specification(明显较少,但确定)。

【讨论】:

    【解决方案2】:

    您也可以使用Boolean 来过滤真实值。

    它为每个值返回一个布尔值。

    如有必要,作为第一个参数传递的值将转换为布尔值。如果该值为0-0nullfalseNaNundefined或空字符串(""),则该对象的初始值为@987654333 @。如果将 DOM 对象 document.all 作为参数传递,则新的布尔对象也具有初始值 false。所有其他值,包括任何对象或字符串"false",都会创建一个初始值为true 的对象。

    function bouncer(arr) {
        return arr.filter(Boolean);
    }
    

    【讨论】:

      猜你喜欢
      • 2015-12-30
      • 2022-06-28
      • 2019-05-23
      • 2015-04-02
      • 1970-01-01
      • 2012-06-22
      • 2016-07-13
      相关资源
      最近更新 更多