我试图按索引过滤元素列表,第一项可能是我想要的项目。
似乎尝试使用
过滤0
arr.filter(function(f) {
if (Number.isInteger(f)) return f;
});
不起作用。虽然Number.isInteger(0)
是真的。
这是我创建的一个小提琴,用来展示一个例子。过滤的数组应该有两个值,而不是一个。
答案 0 :(得分:8)
因为0是javascript中返回f的假值,其中f为0将基本上返回false。
arr.filter(Number.isInteger)
应该是您所需要的,因为过滤器需要一个返回true或false的函数。
答案 1 :(得分:2)
.filter()
函数中的语句正在返回3
,0
,undefined
,其在真实/虚假的宇宙中为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);
})