为什么这段代码不能用于字符串?

时间:2017-10-09 17:20:49

标签: javascript

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

我想要一个简单的解释我想念的概念

3 个答案:

答案 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;
        }
    });
}