过滤一个数字数组,其中0是有效输入

时间:2016-04-24 05:23:46

标签: javascript filter

我试图按索引过滤元素列表,第一项可能是我想要的项目。

似乎尝试使用

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

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

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

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

3 个答案:

答案 0 :(得分:8)

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

arr.filter(Number.isInteger)

应该是您所需要的,因为过滤器需要一个返回true或false的函数。

答案 1 :(得分:2)

.filter()函数中的语句正在返回30undefined,其在真实/虚假的宇宙中为true,{{1 },false。这意味着false函数的返回值为.filter()

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

[3]

这将从var a1 = arr.filter(function(f) { return Number.isInteger(f); }); 函数返回[3,0]

答案 2 :(得分:1)

Array.filter在数组中的每个项目上运行给定函数,并根据函数是返回true还是false来决定是保留它还是抛弃它。没有必要自己退回这个号码。

通过返回数字本身,你最终会返回数字0,array.filter将其视为" false",导致它不包含它。

由于Number.isInteger()自己返回true或false,因此只需单独使用它。

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