在騰訊和百度的面試中,出現了這樣一道面試題,,被你們親切的稱呼爲網紅面試題,這道面試題就是。['1', '2', '3'].map(parseInt)的輸出結果是什麼?['1', '2', '3'].fliter(parseInt)的輸出結果是什麼? 這個面試題,面試官可能不單單須要你說出他的結果,還須要你知道爲何會出現這樣的結果。 面試
先看看parseInt和parseFloat的語法和使用,以便後續在實際例子中解釋。 數組
['1', '2', '3'].map(parseInt) // [1, NaN, NaN] 複製代碼
其實在使用map時,map的callback的第二個參數index引索值就成爲parseeInt的radix值。['1', '2', '3'].map(parseInt)在遍歷的過程。實際上是經歷了下面的過程。 bash
parseInt('1', 0); parseInt('2', 1); parseInt('3', 2); 複製代碼
['1', '2', '3'].map(parseFloat) // [1, 2, 3] 複製代碼
parseFloat相對於parseInt比較簡單,不用考慮第二個參數,只須要看第一個參數是否能正常轉換爲數字就行。 markdown
parseFloat('1'); // 1 parseFloat('2'); // 2 parseFloat('3'); // 3 複製代碼
一個小的知識點:如何快速將一個字符串數組轉化爲數字類型的數組 函數
['1', '2', '3'].map(parseFloat) ['1', '2', '3'].map(Number) 複製代碼
['1', '2', '3'].filter(parseInt) // ["1"] 複製代碼
filter 爲數組中的每一個元素調用一次 callback 函數,並利用全部使得 callback 返回 true 或等價於 true 的值的元素建立一個新數組。 spa
parseInt('1', 0); parseInt('2', 1); parseInt('3', 2); 複製代碼
['1', '2', '3'].filter(parseFloat) // ["1", "2", "3"] 複製代碼
使用parseFloat時,遍歷以後結果的每一項都是結果等價於true,因此所有返回。 code
經過上述的map、filter,咱們聯想到數組其餘方法,當使用parseInt或者是parseFloat來替代callback使用,你只須要理解到parseInt和parseFloat工做原理,那麼針對這類問題,其實結果都是能很快輸出的,也能套用上面的解析過來,來回答面試官。這類面試題也不是什麼難題了。 orm