首页 文章

在作为函数参数传递的数组上使用array.filter()方法

提问于
浏览
-1

我正在经历FreeCodeCamp“Falsy Bouncer”的挑战 . 我必须从数组中删除所有的虚假值 . 我已经知道最简单的解决方案是过滤布尔值,但我想知道是否有可能以这种方式解决问题 .

我在不同的网站上查找了arr.filter()方法,但在这些例子中,带有数组的变量出现在函数之前 . 在我的例子中,我必须操作的数组作为函数的参数 . 所以我真的不明白我在哪里放这一行: var result = arr.filter(bouncer) . 如果它超出了函数 - 那么它返回 arr is not defined . 如果它进入函数它返回 - arr.filter is not a function .

这是我的代码:

function bouncer(arr) {
    // Where do I put this line?   
    var result = arr.filter(bouncer);
    return arr !== false, null, 0, NaN, undefined,"";
  }

  bouncer([7, "ate", "", false, 9]);

那么如果数组是作为函数的参数给出的,那么如何使用array.filter()方法?

2 回答

  • 1

    如果您希望 bouncer 成为用于返回已过滤数组的函数,请使用以下函数:

    function bouncer(arr) {
      return arr.filter(e => !!e);
    }
    
    var result = bouncer([7, "ate", "", false, 9, NaN]);
    console.log(result);
    

    如果你想 bouncer 成为你要传递给 filter 的回调,那么使用这个:

    function bouncer(elem) {
      return !!elem;
    }
    
    var result = [7, "ate", "", false, 9, NaN].filter(bouncer);
    console.log(result);
    

    Note: !!someVariable 将隐式地将 someVariable 转换为其等效的布尔值 .

  • 1

    您使用的方法错误,并且您无法检查由逗号分隔的多个内容 . 做你想做的正确方法

    function bouncer(arr) {
        return arr.filter(v => !!v);
    }
    
    console.log(bouncer([7, "ate", "", false, 9]))
    

相关问题