["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);
得到:如果放到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');
}