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