Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对作为函数参数传递的数组使用array.filter()方法_Javascript_Arrays - Fatal编程技术网

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

Javascript 对作为函数参数传递的数组使用array.filter()方法,javascript,arrays,Javascript,Arrays,我正在接受FreeCodeCamp“Falsy Bouncer”挑战。我必须从数组中删除所有falsy值。我已经知道最简单的解决方案是过滤布尔值,但我想知道是否有可能用这种方法解决这个问题 我在不同的网站上查找了arr.filter()方法,但在这些示例中,函数前面有一个带数组的变量。在我的例子中,我必须操作的数组作为函数的参数。所以我真的不明白该把这行放在哪里:var result=arr.filter(bouncer)。如果超出函数范围-则返回arr未定义。如果它进入函数,则返回-arr.f

我正在接受FreeCodeCamp“Falsy Bouncer”挑战。我必须从数组中删除所有falsy值。我已经知道最简单的解决方案是过滤布尔值,但我想知道是否有可能用这种方法解决这个问题

我在不同的网站上查找了arr.filter()方法,但在这些示例中,函数前面有一个带数组的变量。在我的例子中,我必须操作的数组作为函数的参数。所以我真的不明白该把这行放在哪里:
var result=arr.filter(bouncer)
。如果超出函数范围-则返回
arr未定义
。如果它进入函数,则返回-
arr.filter不是函数

这是我的密码:

 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()方法呢?

您使用的方法是错误的,并且无法检查多个用逗号分隔的对象。做你想做的事的正确方法是

功能弹跳器(arr){
返回arr.filter(v=>!!v);
}

console.log(bouncer([7,“ate”,“”,false,9])
如果希望
bouncer
成为用于返回过滤数组的函数,请使用此函数:

功能弹跳器(arr){
返回arr.filter(e=>!!e);
}
var result=bouncer([7,“ate”,“false,9,NaN]);

控制台日志(结果)参数只是变量<代码>var结果=arr.filter(弹跳器)
已关闭,但您不应该将
bouncer
函数传递到过滤器,您正在创建一个永远不会完成的递归循环您想在结果数组中保留
“ate”
,还是只保留数字?是的,我也想保留“ate”。我只需要过滤掉falsy元素:false、null、0、“、undefined和NaN。这是不正确的@Andreas,不会覆盖isNaN检查,“ate”将保留在数组中。但我同意你可以把它简化为我在回答中编辑的内容为什么要删除“ate”?“比较”部分中的值均为。除非对
NaN
部分没有进一步的定义,否则我认为没有理由进行
isNaN()
检查,因此将使用ibrahims解决方案。@Andreas在阅读了挑战的描述后,我承认你是对的。你的过滤器允许NaNs@baao不,没有!单击RunCodeSnippet并查看结果数组中的“ate”。“除了阿楠,那是什么?@baao,我想你没有解释这个问题!他想过滤那些肮脏和虚伪的价值观!看完挑战的描述后,我承认你是对的。