這道題目要求對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連接