【问题标题】:Filter an array of numbers where 0 is a valid input过滤一个数字数组,其中 0 是有效输入
【发布时间】:2016-04-24 05:23:45
【问题描述】:

我正在尝试按索引过滤元素列表,第一项可能是我想要获取的项目。

似乎试图过滤 0 使用

arr.filter(function(f) {
    if (Number.isInteger(f)) return f;
});

不起作用。虽然Number.isInteger(0) 是真的。

这是我为展示示例而创建的小提琴。过滤的数组应该有两个值,而不是一个。

https://jsfiddle.net/yb0nyek8/1/

【问题讨论】:

    标签: javascript filter


    【解决方案1】:

    因为 0 是 javascript 中返回 f 的错误值,其中 f 为 0 将基本上返回 false。

    arr.filter(Number.isInteger)
    

    应该是你所需要的,因为 filter 想要一个返回 true 或 false 的函数。

    【讨论】:

      【解决方案2】:

      .filter() 函数中的语句返回30undefined,在真/假世界中是truefalsefalse。这意味着.filter() 函数的返回是[3]

      如果要返回所有整数值,请使用以下命令:

      var a1 = arr.filter(function(f) {
        return Number.isInteger(f);
      }); 
      

      这将从.filter() 函数返回[3,0]

      【讨论】:

        【解决方案3】:

        Array.filter 对数组中的每一项运行给定的函数,并根据函数返回 true 或 false 来决定是保留它还是丢弃它。无需自行返回号码。

        通过返回数字本身,您最终会返回数字 0,array.filter 将其视为“假”,导致它不包含它。

        由于 Number.isInteger() 会自行返回 true 或 false,因此请自行使用。

        arr.filter(function (f){
            Number.isInteger(f);
        })
        

        【讨论】:

          猜你喜欢
          • 2020-07-17
          • 2019-05-17
          • 2011-06-18
          • 1970-01-01
          • 2019-02-17
          • 2021-02-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多