2016-04-24 77 views

回答

8

因爲0是在JavaScript返回f其中f是0基本上將返回false一個falsey值。

arr.filter(Number.isInteger) 

應該是你所需要的,因爲過濾器想要一個返回true或false的函數。

2

聲明您.filter()函數內返回30undefined,這在truthy/falsey宇宙是truefalsefalse。這意味着從.filter()函數返回的是[3]

如果你想返回所有整數值使用以下命令:

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

這將從.filter()函數返回[3,0]

1

Array.filter對數組中的每個項目運行給定的函數,並根據函數返回true還是false來決定是保留還是拋出它。沒有必要自己回覆號碼。

通過返回數字本身,您最終返回數字0,array.filter將其視爲「false」,導致它不包含它。

由於Number.isInteger()自身返回true或false,因此可以單獨使用它。

arr.filter(function (f){ 
    Number.isInteger(f); 
}) 
相關問題