這道題大家應(yīng)該經(jīng)常會碰到扰肌,我們打印一下結(jié)果
控制臺打印
想要徹底弄懂同類型的題蟋恬,我們必須先弄懂map樱哼,parseInt
map
array.map(function(currentValue, index, arr), thisValue)
參數(shù)解析:
-
item
:第一個參數(shù),數(shù)組中正在處理的當(dāng)前元素(必選) -
index
:第二個參數(shù)蛹疯,數(shù)組中正在處理的當(dāng)前元素的索引(可選) -
thisArr
:第三個參數(shù),map 方法被調(diào)用的數(shù)組(可選) -
thisValue
:對象作為該執(zhí)行回調(diào)時使用热监,傳遞給函數(shù)捺弦,用作 "this" 的值(可選)
parseInt
// radix進制的由數(shù)字組成的字符串 string 轉(zhuǎn)換為 10 進制的整數(shù)
parseInt(string, radix)
參數(shù)解析:
-
string
:要被解析的字符串(必選) -
radix
:要解析的數(shù)字的基數(shù)。該值介于 2 ~ 36 之間(可選)
radix
詳解:
- 如果radix值為 0孝扛,則數(shù)字將以 10 為基礎(chǔ)來解析
- 如果radix小于 2 (!==0)或者大于 36列吼,則 parseInt() 將返回 NaN
- 沒有設(shè)置該參數(shù)時,如果string以 “0x” 或 “0X” 開頭苦始,將以 16 為基數(shù)
- 沒有設(shè)置該參數(shù)時寞钥,如果 string 以 0 開頭,轉(zhuǎn)換為8進制或十進制
- 沒有設(shè)置該參數(shù)時盈简,如果 string 以 1 ~ 9 開頭凑耻,將以 10 為基數(shù)
- 如果string超出radix的表示范圍,則返回NaN
實踐
['1', '2', '3'].map(parseInt)
// 等同于
['1', '2', '3'].map((item, index) => {
return parseInt(item ,index)
})
parseInt('1', 0) // 1 ===> radix值為 0柠贤,則數(shù)字將以 10 為基礎(chǔ)來解析
parseInt('2', 1) // NaN ===> radix小于2香浩,返回NaN
parseInt('3', 2) // NaN ===> string超出radix的表示范圍,返回NaN
parseInt('10', 9) // 9 ===> 1 * 9 ^ 1 + 0 * 9 ^ 0 = 9
parseInt("17", 8) // 15 ===> 1 * 8 ^ 1 + 7 * 8 ^ 0 = 15
parseInt("1f", 16) // 31 ===> 16 + 15
parseInt(' 12x') // 12 ===> 開頭和結(jié)尾的空格是允許的
parseInt('s90') // NaN ===> 如果字符串的第一個字符不能被轉(zhuǎn)換為數(shù)字臼勉,那會返回 NaN
parseInt(' 12abc!6') // 12 ===> 只有字符串中的第一組數(shù)字會被返回