【问题标题】:How to filter out NaN in javascripts Filter function如何在 javascript Filter 函数中过滤掉 NaN
【发布时间】:2017-06-15 12:01:03
【问题描述】:

我需要帮助过滤掉NaN

var trimmer =[7, "ate", "", false, 9];

var filt = value=> value !==false && value!==''&& value!==undefined&&  
value!==null&&  value!==NaN;


trimmer.filter(filt);

//works for this->[7, "ate", "", false, 9];
//but not for [false, null, 0, NaN, undefined, ""];
//need help filtering out NaN

【问题讨论】:

  • 我正在尝试返回,for => [7, "ate",' ', false, 9]; return [7, "ate", 9]; 删除 false 和空字符串,for => [false, null, 0, NaN, undefined, ""] return [ ]

标签: javascript function filter


【解决方案1】:

您可以改用isNan() 函数。关注this link查看更多示例。

【讨论】:

    【解决方案2】:

    NaN 是假的(false,undefined,null,"",0 也是):

    trimmer.filter(e=>e);
    

    【讨论】:

    • 删除 empy 字符串在这里没有问题 => && value!==''
    • @rhodoscoder 那么上面那个是最好的解决方案
    • 试过了,奇怪的是它完美无瑕(几乎),但它没有删除空字符串''
    • @rhodosCoder 确实如此。如果真的是空的。 " "
    • @rhodos code you're welcome ;) 然后随意点击绿色复选标记 ;)
    【解决方案3】:

    Javascript 将 0 视为 false,因此它会被过滤。需要检查变量的类型,如果是数字则返回true。

    var trimmer = [false, null, 0, NaN, undefined, ""];
    
    console.log(trimmer.filter(e=>e));

    【讨论】:

    • 我不想返回零,我想要这个 => [ ] 而不是我得到这个 => [NaN]
    • 那么@Jonas 的解决方案非常适合您
    • 所以我这样做了var filt = value=> value !==false && value!==''&& value!==undefined&& value!==null &&isNaN(value)!=true && value!=0;,它在[7, "ate", "", false, 9] 中吃掉了我的字符串:)
    • 我尝试了@jonas 解决方案,奇怪的是它(几乎)完美无缺,但它没有删除空字符串''
    【解决方案4】:

    Rohodos 简单更改值!= NaN!isNAN(value)

    所以你的代码现在看起来像

    var trimmer = [false, null, 0, NaN, undefined, ""];

    var filt = value=> value !==false && value!==''&& value!==undefined&&value!==null&& !isNaN(value);

    trimmer.filter(filt);

    【讨论】:

    • var trimmer = [false, null, 0, NaN, undefined, ""]; var filt = value=> value !==false && value!==''&& value!==undefined&& value!==null &&isNaN(value)==true; trimmer.filter(filt); .NaN 在此之后如何仍然没有过滤掉
    • Rohodos isNaN(value)==true; 它应该是 isNaN(value)==false; 因为我们正在过滤掉 NaN 值,不包括它
    【解决方案5】:

    NaN == NaN 总是会给你错误的。

    var trimmer =[false, null, 0, NaN, undefined, ""];
    var trimmer1 =[7, "ate", "", false, 9];
    
    var filt = value=> value !==false && value!==''&& value!==undefined&&  
    value!==null && value.toString() !== "NaN" && value !== 0;
    
    
    console.log(trimmer.filter(filt));
    console.log(trimmer1.filter(filt));
    //works for this->[7, "ate", "", false, 9];
    //but not for [false, null, 0, NaN, undefined, ""];
    //need help filtering out NaN

    【讨论】:

    • 我正在尝试返回,for => [7, "ate",' ', false, 9]; return [7, "ate", 9]; 删除 false 和空字符串,for => [false, null, 0, NaN, undefined, ""] return [ ]
    • 我更新了我的答案,请立即查看。这是你想要的吗?
    【解决方案6】:

    如果您想专门过滤掉 NaN 但留下其他虚假值,那么这将起作用:

    const trimmerWithoutNaN = trimmer.filter(val => !isNaN(val))
    

    【讨论】:

      猜你喜欢
      • 2018-09-02
      • 2012-11-09
      • 1970-01-01
      • 2020-02-24
      • 1970-01-01
      • 2022-01-07
      • 2017-09-17
      • 2017-10-04
      • 1970-01-01
      相关资源
      最近更新 更多