摘要:今天看見(jiàn)一道面試題答案是多少答案是對(duì)方法不太了解就去搜了一下,里面也包含了對(duì)這道面試題的詳解。方法返回一個(gè)由原數(shù)組中的每個(gè)元素調(diào)用一個(gè)指定方法后返回值組成的新數(shù)組。使用方法處理數(shù)組時(shí),數(shù)組元素的范圍在方法第一次調(diào)用之前就已經(jīng)確定了。
今天看見(jiàn)一道面試題:["1","2","3"].map(parseInt)答案是多少?
答案是[1,NaN,NaN]
對(duì)map()方法不太了解就去搜了一下:Array.prototype.map(),里面也包含了對(duì)這道面試題的詳解。
map()方法返回一個(gè)由原數(shù)組中的每個(gè)元素調(diào)用一個(gè)指定方法后返回值組成的新數(shù)組。
語(yǔ)法array.map(callback[,thisArg])
具體參數(shù)上面的鏈接中能看見(jiàn),也就不重復(fù)了。
描述map 方法會(huì)給遠(yuǎn)數(shù)組中的每個(gè)元素都按順序調(diào)用一次 callbak 函數(shù)。 callback 每次執(zhí)行后的返回值(包括 undefined )組合起來(lái)形成一個(gè)新數(shù)組。 callback 函數(shù)只會(huì)在有值的索引上被調(diào)用,那些從來(lái)沒(méi)被賦過(guò)值或者使用 delete 刪除的索引則不會(huì)被調(diào)用。
callback 函數(shù)會(huì)被自動(dòng)傳入三個(gè)參數(shù):數(shù)組元素,元素索引,原數(shù)組本身。
如果 thisArg 參數(shù)有值,則每次 callback 函數(shù)被調(diào)用的時(shí)候, this 都會(huì)指向 thisArg 參數(shù)上的這個(gè)對(duì)象。若省略了 thisArg 參數(shù),或者賦值為 null 或 defined,則 this 指向全局對(duì)象。
map 不修改調(diào)用它的原數(shù)組本身(當(dāng)然可以在 callback 執(zhí)行時(shí)改變?cè)瓟?shù)組)。
使用 map 方法處理數(shù)組時(shí),數(shù)組元素的范圍在 callback 方法第一次調(diào)用之前就已經(jīng)確定了。在 map 方法執(zhí)行的過(guò)程中:原數(shù)組中增加的元素將不會(huì)被 callback 訪(fǎng)問(wèn)到;若已經(jīng)存在的元素被改變或者刪除,則它們的傳遞到 callback 的值是map 方法遍歷到它們的那一時(shí)刻的值;而被刪除的元素將不會(huì)訪(fǎng)問(wèn)到。
面試題這個(gè)時(shí)候就很好理解為什么最后的返回值是[1,NaN,NaN]了,因?yàn)槭褂?b>parseInt時(shí),是可以傳遞兩個(gè)參數(shù)的,第一個(gè)參數(shù)是被解析的值,第二個(gè)參數(shù)是進(jìn)制數(shù)。map方法在調(diào)用callback函數(shù)時(shí),會(huì)給它傳遞三個(gè)參數(shù):當(dāng)前正在遍歷的元素,元素索引,原數(shù)組本身,第三個(gè)參數(shù)parseInt會(huì)忽視,但第二個(gè)參數(shù),會(huì)把傳遞過(guò)來(lái)的索引值當(dāng)做進(jìn)制數(shù)來(lái)使用。所以結(jié)果是這樣
如果想要得到正確的值,可以這樣:
function returnInt(element){ return parseInt(element,10); } ["1", "2", "3"].map(returnInt); // 返回[1,2,3]
感覺(jué)這個(gè)函數(shù)和Array.prototype.forEach()有點(diǎn)像。。詳情Array.prototype.forEach()
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/80740.html
摘要:為了解決這些問(wèn)題,就可以使用定時(shí)器對(duì)函數(shù)進(jìn)行節(jié)流。當(dāng)?shù)诙握{(diào)用該函數(shù)時(shí),它會(huì)清除前一次的定時(shí)器并設(shè)置另一個(gè)。如果前一個(gè)定時(shí)器已經(jīng)執(zhí)行過(guò)了,這個(gè)操作就沒(méi)有任何意義。然而,如果前一個(gè)定時(shí)器尚未執(zhí)行,其實(shí)就是將其替換為一個(gè)新的定時(shí)器。 2017面試分享(js面試題記錄) 1. 最簡(jiǎn)單的一道題 11 * 2 a8 * 3 2. 一道this的問(wèn)題 var num = 1...
摘要:為了解決這些問(wèn)題,就可以使用定時(shí)器對(duì)函數(shù)進(jìn)行節(jié)流。當(dāng)?shù)诙握{(diào)用該函數(shù)時(shí),它會(huì)清除前一次的定時(shí)器并設(shè)置另一個(gè)。如果前一個(gè)定時(shí)器已經(jīng)執(zhí)行過(guò)了,這個(gè)操作就沒(méi)有任何意義。然而,如果前一個(gè)定時(shí)器尚未執(zhí)行,其實(shí)就是將其替換為一個(gè)新的定時(shí)器。 2017面試分享(js面試題記錄) 1. 最簡(jiǎn)單的一道題 11 * 2 a8 * 3 2. 一道this的問(wèn)題 var num = 1...
摘要:為了解決這些問(wèn)題,就可以使用定時(shí)器對(duì)函數(shù)進(jìn)行節(jié)流。當(dāng)?shù)诙握{(diào)用該函數(shù)時(shí),它會(huì)清除前一次的定時(shí)器并設(shè)置另一個(gè)。如果前一個(gè)定時(shí)器已經(jīng)執(zhí)行過(guò)了,這個(gè)操作就沒(méi)有任何意義。然而,如果前一個(gè)定時(shí)器尚未執(zhí)行,其實(shí)就是將其替換為一個(gè)新的定時(shí)器。 2017面試分享(js面試題記錄) 1. 最簡(jiǎn)單的一道題 11 * 2 a8 * 3 2. 一道this的問(wèn)題 var num = 1...
摘要:為了解決這些問(wèn)題,就可以使用定時(shí)器對(duì)函數(shù)進(jìn)行節(jié)流。當(dāng)?shù)诙握{(diào)用該函數(shù)時(shí),它會(huì)清除前一次的定時(shí)器并設(shè)置另一個(gè)。如果前一個(gè)定時(shí)器已經(jīng)執(zhí)行過(guò)了,這個(gè)操作就沒(méi)有任何意義。然而,如果前一個(gè)定時(shí)器尚未執(zhí)行,其實(shí)就是將其替換為一個(gè)新的定時(shí)器。 2017面試分享(js面試題記錄) 1. 最簡(jiǎn)單的一道題 11 * 2 a8 * 3 var a = 2, b = 3; va...
摘要:為了解決這些問(wèn)題,就可以使用定時(shí)器對(duì)函數(shù)進(jìn)行節(jié)流。當(dāng)?shù)诙握{(diào)用該函數(shù)時(shí),它會(huì)清除前一次的定時(shí)器并設(shè)置另一個(gè)。如果前一個(gè)定時(shí)器已經(jīng)執(zhí)行過(guò)了,這個(gè)操作就沒(méi)有任何意義。然而,如果前一個(gè)定時(shí)器尚未執(zhí)行,其實(shí)就是將其替換為一個(gè)新的定時(shí)器。 2017面試分享(js面試題記錄) 1. 最簡(jiǎn)單的一道題 11 * 2 a8 * 3 var a = 2, b = 3; va...
閱讀 1798·2023-04-25 19:37
閱讀 1447·2021-11-16 11:45
閱讀 2885·2021-10-18 13:30
閱讀 2856·2021-09-29 09:34
閱讀 1783·2019-08-30 15:55
閱讀 3177·2019-08-30 11:10
閱讀 1905·2019-08-29 16:52
閱讀 1052·2019-08-29 13:18