所以我正在练习算法(javascript),我遇到了这个挑战,我们必须过滤一个数组,删除以下元素:
false,NaN,undefined,“”,null,0
我的代码似乎存在字符串和字符问题,但这些测试失败了。
-bouncer([7,“ate”,“”,false,9])应该返回[7,“ate”,9] (已退回[7,9])
-bouncer([“a”,“b”,“c”])应该返回[“a”,“b”,“c”] (已退回[])
function bouncer(arr) {
return arr.filter(function(element)
{
if (element != false && !isNaN(element) && element != null && element != "" && element != undefined)
{return element;}
}
);
}
我想要一个简单的解释我想念的概念
答案 0 :(得分:1)
function bouncer(arr) {
return arr.filter(function(element) {
if (element) {
return element;
}
}
);
}
这是你的答案。
答案 1 :(得分:0)
除了使用!=
代替!==
的给定强制问题之外,您可以使用Boolean
作为回调进行过滤,这会返回真正的元素。
function bouncer(arr) {
return arr.filter(Boolean);
}
console.log(bouncer([7, "ate", "", false, 9])); // [7, "ate", 9]
console.log(bouncer(["a", "b", "c"])); // ["a", "b", "c"]
答案 2 :(得分:0)
以下代码适用于所有条件。请看一下。
function bouncer(arr) {
return arr.filter(function(element) {
if (element && element.trim().length > 0 && element != "NaN") {
return element;
}
});
}