falsy.png
    falsy1.png
    这道题虽然提示使用Array.filter()方法,但还考察了对数据类型的掌握;先用列举的方法,将不符合的情况列举出来,代码如下:

    1. function bouncer(arr) {
    2. function fun(element){
    3. if(element !== undefined && element !== false && element !== null && element !== 0 && element !== '' && element !== isNaN){
    4. return element;
    5. }
    6. }
    7. return arr.filter(fun);
    8. }
    9. bouncer([false, null, 0, NaN, undefined, ""]);


    这样看上去是不是感觉很臃肿,那有没有其他方法呢?有的,可以对这些判断条件进行归纳,那就是为”假”的情况下删除该值,这里可以考虑使用Boolean()方法,代码如下:

    1. function bouncer(arr) {
    2. function fun(element){
    3. return Boolean(element);
    4. }
    5. return arr.filter(fun);
    6. }
    7. bouncer([7, "ate", "", false, 9]);

    还能继续简写:

    1. function bouncer(arr) {
    2. return arr.filter(function fun(element){
    3. return !!(element);
    4. });
    5. }
    6. bouncer([7, "ate", "", false, 9]);

    版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。