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

轉自

["1", "2", "3"].map(parseInt)得到什么?
答案是:[1, NaN, NaN].
原因:parseInt接收的是兩個參數(shù),map傳遞的是3個參數(shù)。

map函數(shù)定義:

arr.map(callback[,thisArg]);

callback函數(shù)需要以下3個值:
currentValue:當前處理數(shù)值
index:處理的數(shù)值的索引值
array:map函數(shù)處理的函數(shù)值

thisArg可選. callback函數(shù)里的this值 默認是window對象

parseInt函數(shù)定義:

parseInt(string, radix);

string: 需要轉化的字符,如果不是字符串會被轉換,忽視空格符。
radix:數(shù)字2-36之前的整型。默認使用10,表示十進制。
需要注意的是,如果radix在2-36之外會返回NaN。
執(zhí)行下面的函數(shù):

var parseInt = function (string, radix, others) {
    return string + '-' + radix + '-' + others;
};
['1','2','3'].map(parseInt);

得到:
image.png

如果放到parseInt函數(shù)里面則是:

parseInt('1', 0);
parseInt('2', 1);
parseInt('3', 2);

所以得到1,NaN,NaN

Map函數(shù)的其他用途:

例1:遍歷querySelectorAll對象,并執(zhí)行相關函數(shù)

var elems = document.querySelectorAll('div');
var values = Array.prototype.map.call(elems, function (elem) {
    return elem;
});

例2:反轉字符串

var str = '12345';
Array.prototype.map.call(str, function(x){
    return x;
}).reverse().join();

還有一種翻轉字符的方法:

var str = '12345';
var strre = str.split('').reverse().join('');

附:這個方法可以判斷回文

var str = '12345';
var str1 = Array.prototype.map.call(str, function(x){
    return x;
}).reverse().join();

if (str === str1) {
   console.log('true');
} else {
   console.log('false');
}
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容