前端面試 ["1", "2", "3"].map(parseInt)

題目點評

這道題目要求對ECMAScript5版本的函數比較熟悉纔可以正確的解答出來,重點考察的就是map函數,這個函數就是ECMAScript5(最新版本)新增的,在加上parseInt這個函數自己也很難理解,該題目難易程度偏難!html

map方法的使用 編程

語法數組

array.map(callback[,thisArg]);編程語言

對數組的從新映射。將數組的各個元素依次傳入到回調函數callback,回調函數返回的結果依次替換原數組對應的元素。函數

回調函數callback 會被自動傳入三個參數:數組元素,元素索引,原數組自己。this

map(function(T=,number=, Array.<T>=))spa

T:表示元素視頻

number:元素的下標htm

Array.<T>:表示數組原始值blog

<T>看到這個愈來愈感受JavaScript在向OOP編程語言Java、C#靠近。我的感想,不禁自發,看不懂的能夠忽略。 

parseInt()方法的使用

語法

parseInt(s,radix)解析一個字符串,並返回一個整數。

參數

s:表示字符串

radix:表示其它進制轉十進制的基數,範圍在2~36,不在這個範圍的返回NaN。該參數能夠省略或爲0,這種狀況會根據字符串的開頭來判斷基數,規則以下:

1)字符串以"0x" 開頭,基數爲16

2)字符以"0"開頭,版本低於ECMAScript 5的,基數爲8。版本爲ECMAScript 5的,基數爲10

3)以 1 ~ 9 的數字開頭,基數爲10。

基數是什麼?

基數:是其它進制轉十進制數的公式裏的組成部分,公式以下:

 

位數1 基數0+ 位數2 基數1位數3 基數2 位數n 基數n-1

以二進制101轉十進制爲例,二進制的基數爲2。(估計看到這裏的不少同窗幾乎暈倒,看不明白了,看不明白的請看視頻演示和講解 http://www.chuanke.com/3885380-190205.html) 

百位

十位

個位

 

1

0

1

 

2

1

0

權重

101=1*20+0*21+1*22=1+0+4=5 

因此 parseInt(「101」,2)返回5

由此咱們能夠推到出parseInt(「210」,3)的結果

parseInt("210",3)=0*30+1*31+2*32=0+3+18=21 

懵逼了:2~36進制都是有效的,咱們只聽過二進制、八進制、十進制、十六進制,三十六進制是什麼鬼?請看parseInt函數的詳解【任你百度都沒有看不懂的,老曹給你作詳解便知其奧妙】。 

題目的結果推導

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

[0]=parseInt(「1」,0);//1*100=1*1=1

[1]=parseInt(「2」,1);//radix不在2~36的返回NaN

[2]=parseInt(「3」,2);//二進制數沒有3,只有0 1 ,因此NaN 

因此最終的結果是 [1,NaN,NaN]

parseInt() MDN連接

另:parseFloat() 只有一個入參,若是是[1,2,3].map(parseFloat),

詳情參考parseFloat()MDN連接

相關文章
相關標籤/搜索