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