Javascript 为什么赢了';这段代码不能在字符串上工作吗?
所以我在练习算法(javascript),我遇到了这个挑战,我们必须过滤数组,删除以下元素: false,NaN,未定义,“,null,0 我的代码似乎在字符串和字符方面有问题,它没有通过这些测试 -保镖([7,“ate”,false,9])应该返回[7,“ate”,9] (返回[7,9]) -保镖([“a”、“b”、“c”])应该返回[“a”、“b”、“c”] (返回[]) 我想简单解释一下我所缺少的概念Javascript 为什么赢了';这段代码不能在字符串上工作吗?,javascript,Javascript,所以我在练习算法(javascript),我遇到了这个挑战,我们必须过滤数组,删除以下元素: false,NaN,未定义,“,null,0 我的代码似乎在字符串和字符方面有问题,它没有通过这些测试 -保镖([7,“ate”,false,9])应该返回[7,“ate”,9] (返回[7,9]) -保镖([“a”、“b”、“c”])应该返回[“a”、“b”、“c”] (返回[]) 我想简单解释一下我所缺少的概念 function bouncer(arr) { return arr.filte
function bouncer(arr) {
return arr.filter(function(element) {
if (element) {
return element;
}
}
);
}
这是给你的答案。在给定的带有
的强制问题旁边=代码>而不是==
,您可以使用布尔值作为回调进行过滤,该回调返回truthy元素
功能弹跳器(arr){
返回arr.filter(布尔值);
}
log(bouncer([7,“ate”,“false,9]);//[7,“吃”,9]
控制台日志(保镖([“a”、“b”、“c”]);//[“a”、“b”、“c”]
以下代码适用于所有条件。请看一看
function bouncer(arr) {
return arr.filter(function(element) {
if (element && element.trim().length > 0 && element != "NaN") {
return element;
}
});
}
使用==
oprator,如果您陷入JavaScript强制问题,那么它应该会起作用。有关isNaN
在字符串上的行为的详细信息,请参阅。对于console.log(bouncer([7,“ate”,“”,false,9,new Boolean(false)]),这将失败@Gautam,一个对象实例总是真实的,不管它们的值是多少!伊斯南(“ate”);对于所有字符串和字符都将为false:)如果
条件真的存在,则不需要使用。您几乎可以只返回元素就可以了。@vishwad-Gautam共享的代码没有检查“NaN”,所以请在代码中也检查“NaN”。谢谢
function bouncer(arr) {
return arr.filter(function(element) {
if (element && element.trim().length > 0 && element != "NaN") {
return element;
}
});
}