參考:廖雪峰老師的javascript教程 小明希望利用map()把字符串變成整數(shù),他寫(xiě)的代碼很簡(jiǎn)潔:
'use strict';var arr = ['1', '2', '3'];var r;r = arr.map(parseInt);alert('[' + r[0] + ', ' + r[1] + ', ' + r[2] + ']');結(jié)果竟然是[1, NaN, NaN],小明百思不得其解,請(qǐng)幫他找到原因并修正代碼。
arr.map會(huì)為調(diào)用的函數(shù)傳入以下三個(gè)參數(shù): 1、currentValue,數(shù)組中當(dāng)前被傳遞的元素。 2、index,數(shù)組中當(dāng)前被傳遞的元素的索引。 3、array,調(diào)用 map 方法的數(shù)組。
而parseInt可以接受兩個(gè)參數(shù): 1、string:必需。要被解析的字符串。 2、radix:可選。表示要解析的數(shù)字的基數(shù)。該值介于 2 ~ 36 之間。 如果省略該參數(shù)或其值為 0,則數(shù)字將以 10 為基礎(chǔ)來(lái)解析。如果它以 “0x” 或 “0X” 開(kāi)頭,將以 16 為基數(shù)。 如果該參數(shù)小于 2 或者大于 36,則 parseInt() 將返回 NaN。
所以實(shí)際上是執(zhí)行了: parseInt(‘1’,0,[‘1’,’2’,’3’]);//1 parseInt(‘2’,1,[‘1’,’2’,’3’]);//NaN parseInt(‘3’,2,[‘1’,’2’,’3’]);//NaN
所以修正的代碼應(yīng)為:
r = arr.map(function(x) { return parseInt(x,10) });或者r = arr.map(function(x) { return parseInt(x) });新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注