前端面試題_06_parseInt與map遍歷組合題

PE7ERJ發表於2020-11-28

[“1”,“2”,“3”].map(parseInt)

what&why?
早在2013年,有人在微博上釋出以下程式碼段:

    ['10','10','10','10','10'].map(parseInt)
    //[10,NaN,2,3,4]

parseInt(取整)
定義和用法
parseInt()函式解析一個字串引數,並返回一個指定基數的整數(數學系統的基礎)。
語法
parseInt(string,radix)
string:必需。要被解析的字串;
radix:可選。表示要解析的數字的基數。該值介於2~36之間。如果省略該引數或其值為0,則數字將以10為基礎來解析。如果它以“0x”或“0X開頭”,將以16為基數。如果該引數小於2或者大於36,則parseInt()將返回NaN。
返回值
返回解析後的數字。

const round = parseInt(100)
    console.log(round)

在這裡插入圖片描述

    const round = parseInt(100,10)
    console.log(round)

在這裡插入圖片描述

    const round = parseInt(100,2)
    console.log(round)

在這裡插入圖片描述

map(遍歷)
map()方法建立一個新陣列,其結果是該陣列中的每個元素都呼叫一個提供的函式後返回的結果。

let new_array = arr.map(function callback(currentValue,index,array){}[,thisArg])

其中callback生成新陣列元素的函式,使用三個引數:
currentValue callback的第一個引數,陣列中正在處理的當前元素。
index callback的第二個引數,陣列中正在處理的當前元素的索引。
array callback的第三個引數,map方法被呼叫的陣列。
thisArg 可選的,執行callback函式時 使用的this值。

<script>
    const arr = [1,2,3];
    const arr2 = arr.map(function(num){ return num+1})
    console.log(arr2)
</script>

在這裡插入圖片描述

回到真實的事例上

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

對於每個迭代map,parseInt()傳遞兩個引數:字串和基數。所以實際執行的程式碼是:

<script>
    const arr = [1,2,3];
    const arr2 = arr.map(function(item,index){ return parseInt(item,index)})
    console.log(arr2)
</script>

在這裡插入圖片描述

如何在現實世界中做到這一點
如果您實際上想要迴圈訪問字串陣列,帶怎麼辦?map()然後把它換成數字?使用編號!

<script>
    const arr = [1,2,3];
    const arr2 = arr.map(function(Number){ return parseInt(Number)})
    console.log(arr2)
</script>

在這裡插入圖片描述

相關文章