JS中map和parseInt的用法詳解
目錄
- map
- 參數(shù)
- 使用
- map和parseInt一起使用
map
map方法用于創(chuàng)建一個(gè)新的數(shù)組(不改變?cè)瓟?shù)組),這個(gè)新數(shù)組由原數(shù)組中的每個(gè)元素,調(diào)用map中的回調(diào)函數(shù)處理后的返回值組成!
參數(shù)
map(callbackFn, thisArg)
callbackFn 回調(diào)函數(shù),數(shù)組中的每個(gè)元素都會(huì)調(diào)用該函數(shù),對(duì)數(shù)據(jù)進(jìn)行處理,處理完成的元素會(huì)被添加到新的數(shù)組中!callbackFn被調(diào)用時(shí)會(huì)傳入如下參數(shù):
- item 當(dāng)前正在處理的元素
- index 當(dāng)前正在處理的元素下標(biāo)
- arr 原數(shù)組
thisArg(可選) 用來(lái)修改this指向
使用
// 給數(shù)組中每一項(xiàng)增加一個(gè)label屬性!const arr = [{name:"測(cè)試1"},{name:"測(cè)試2"},{name:"測(cè)試3"}]const newArr = arr.map(item=>{ item.label = "通過(guò)map添加" return item})// 結(jié)果: newArr = [{name:"測(cè)試1",label: "通過(guò)map添加"},{name:"測(cè)試2",label: "通過(guò)map添加"},{name:"測(cè)試3",label: "通過(guò)map添加"}]
thisArg這個(gè)參數(shù)因?yàn)閷?shí)際開發(fā)中基本都用的是箭頭函數(shù),所以用到第二個(gè)參數(shù)的情況并不多
const arr = [{name:"測(cè)試1"},{name:"測(cè)試2"},{name:"測(cè)試3"}]const newArr = arr.map(function(item){ console.log(this); // Number?{1}},1)
map和parseInt一起使用
正常情況下我們使用map回調(diào)函數(shù)中只會(huì)傳遞一個(gè)參數(shù)item,這就可能會(huì)出現(xiàn)下面這種問(wèn)題:
console.log(["1", "2", "3"].map(parseInt));
期望輸出 [1, 2, 3]
, 而實(shí)際結(jié)果是 [1, NaN, NaN]
,這是因?yàn)閜arseInt在使用時(shí),也只傳遞一個(gè)參數(shù)進(jìn)去,但實(shí)際上parseInt可以接收兩個(gè)參數(shù)(表達(dá)式,基數(shù)),所以如上代碼map在執(zhí)行回調(diào)時(shí)默認(rèn)傳遞了三個(gè)參數(shù)parseInt的第二個(gè)參數(shù)為下標(biāo),就導(dǎo)致了[1, NaN, NaN]
的結(jié)果!
# parseInt()
string(必選),要解析的字符串
radix(可選),表示要解析的數(shù)字的基數(shù)
radix介于 2 ~ 36 之間,如果省略該參數(shù)或其值為0,則數(shù)字將以10為基礎(chǔ)來(lái)解析,如果它以 0x或0X開頭,將以16為基數(shù),如果該參數(shù)小于2或者大于36,則parseInt()將返回NaN。
到此這篇關(guān)于JS中map和parseInt的用法詳解的文章就介紹到這了,更多相關(guān)JS map parseInt內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!
