['10','10','10','10','10'].map(parseInt),['1','2','3'].map(parseInt)返回結果是什麼

【問題】

最近看到的題如下,分別輸出什麼結果,第一反應[1,2,3],[10,10,10,10,10]?對麼?
[‘1’,‘2’,‘3’].map(parseInt)
[‘10’,‘10’,‘10’,‘10’,‘10’].map(parseInt)
正確答案:[1, NaN, NaN] , [10, NaN, 2, 3, 4]

果然不對,來來來,從頭捋,看自己爲什麼想錯了,肯定是map和parseInt理解的不徹底

【Array.map()】

.map() 文檔

語法 :arr.map((current[, index, arr]) => {})

  • 參數
    • current 數組中當前需要處理的元素
    • index 索引(可選)
    • arr map方法調用的數組(可選)
  • 返回值
    • 新數組
【parseInt(string, radix)】

parseInt()文檔
語法:parseInt(string, radix)

  • 參數
    • string 要處理的字符串
    • radix 進制數
  • 返回值
    • 按照進制數將字符串按照進制數返回Number類型
    • 無法被轉換的返回NaN
【問題的思路】

數組當前元素作爲parseInt的第一個參數,index作爲parseInt的進制參數
注意:如果radix沒有指定或者爲0,參數會被假定以10爲基數來解析,radix參數範圍是2~36

// 實際執行
['1', '2', '3'].map((item, index) => {
	return parseInt(item, index)
})
parseInt('1', 0); // 1 如果radix沒有指定或者爲0,參數會被假定以10爲基數來解析
parseInt('2', 1); // NaN
parseInt('3', 2); // NaN

// 實際執行
['10', '10', '10', '10', '10'].map((item, index) => {
	return parseInt(item, index)
})
parseInt('10', 0); // 10 
parseInt('10', 1); // NaN 
parseInt('10', 2); // 2 ==> 1*2^1 + 0*2^0 
parseInt('10', 3); // 3 ==> 1*3^1 + 0*2^0 
parseInt('10', 4); // 4 ==> 1*4^1 + 0*2^0 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章