Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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 为什么赢了';这段代码不能在字符串上工作吗?_Javascript - Fatal编程技术网

Javascript 为什么赢了';这段代码不能在字符串上工作吗?

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

所以我在练习算法(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.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;
        }
    });
}