['1', '2', '3'].map(parseInt) 解析

參考

map語法

var new_array = arr.map(function callback(currentValue[, index[, array]]) {
   // Return element for new_array 
   }[,thisArg])

callback
生成新數組元素的函數,使用三個參數:
currentValue
callback 數組中正在處理的當前元素。
index可選
callback 數組中正在處理的當前元素的索引。
array可選
callback map 方法被調用的數組。
thisArg可選
執行 callback 函數時使用的this 值。

parseInt 語法

parseInt(string, radix);

string
要被解析的值。如果參數不是一個字符串,則將其轉換爲字符串(使用 ToString 抽象操作)。字符串開頭的空白符將會被忽略。
radix
一個介於2和36之間的整數(數學系統的基礎),表示上述字符串的基數。比如參數"10"表示使用我們通常使用的十進制數值系統。始終指定此參數可以消除閱讀該代碼時的困惑並且保證轉換結果可預測。當未指定基數時,不同的實現會產生不同的結果,通常將值默認爲10。

因此執行步驟爲:

1. parseInt('1', 0)  //radix爲0時,且string參數不以“0x”和“0”開頭時,按照10爲基數處理。這個時候返回1
2. parseInt('2', 1)  //基數爲1(1進制)表示的數中,最大值小於2,所以無法解析,返回NaN
3. parseInt('3', 2)  //基數爲2(2進制)表示的數中,最大值小於3,所以無法解析,返回NaN

//map函數返回的是一個數組,所以最後結果爲[1, NaN, NaN]

如果想正確的轉化數組中的字符串爲整數,可參考如下方法:

let unary = fn => val => fn(val)
let parse = unary(parseInt)
console.log(['1.1', '2', '0.3'].map(parse)) // [1, 2, 0]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章