【每日一題】你不知道的 map(parseInt)

2021-03-02 前端做題家
問 ['10','10','10','10','10'].map(parseInt) 返回什麼 ?

答案不是 [10, 10, 10, 10, 10],而是 [10, NaN, 2, 3, 4]。

我們先看map函數,根據MDN, map()方法返回一個新數組,是原數組中的每個元素都調用callback函數後返回的結果。

var new_array = arr.map(function callback(currentValue[, index[, array]]) { }[, thisArg])

callback函數可以接收三個參數:

再看parseInt 函數,根據MDN, parseInt(string, radix) 解析一個字符串並返回指定基數的十進位整數,radix 是2-36之間的整數,表示被解析字符串的基數。

因此,parseInt 的第一個參數是 map 傳入的 currentValue,第二個參數 radix 是 map 傳入的 index。題目變成了:

[parseInt('10',0), parseInt('10',1), parseInt('10',2), parseInt('10',3), parseInt('10',4)]

parseInt 的解析規則:

當 radix 小於 2 或大於 36,或第一個非空格字符不能轉換為數字時 parseInt 返回 NaN。

如果不是 NaN,則以第二個參數作為基數做運算。(例如,radix為10,就是可以轉換十進位數,為8可以轉換八進位數,16可以轉換十六進位數,以此類推)。

如果 radix 是 undefined、0 或未指定的,JavaScript會假定以下情況:

如果輸入的 string以 "0x"或 "0X"(一個0,後面是小寫或大寫的X)開頭,那麼radix被假定為16,字符串的其餘部分被當做十六進位數去解析。

如果輸入的 string以 "0"(0)開頭, radix被假定為8(八進位)或10(十進位)。具體選擇哪一個radix取決於實現。ECMAScript5 澄清了應該使用十進位,但不是所有的瀏覽器都支持。因此,在使用 parseInt 時,一定要指定一個 radix。

如果輸入的 string 以任何其他值開頭,radix 是 10 (十進位)。

基於上述規則,可以得出結果 [10, NaN, 2, 3, 4]

相關焦點

  • 【春節日更】變態面試題之map與parseInt的結合輸出
    ["1", "2","3"].map(parseInt) 答案是多少?【分析】此題,主要是考 map 與 parseInt 方法的參數思考?思考?思考?首先,來看看map的語法 ;   如果知道可以跳過map() 方法創建一個新數組,其結果是該數組中的每個元素是調用一次提供的函數後的返回值。
  • map和parseInt結合使用
    「 話不多說進入正題,在快手中看到過一個考題是關於map和parseInt結合使用輸出結果值。
  • 【第61期】高頻網紅面試題['1','2','3'].map(parseInt) 原理解析
    (parseInt));權威原文參考 A JavaScript Optional Argument Hazardmap這個方法他或回調函數的參數 ,和他的使用var array1 = [1, 4, 9, 16];const map1 = array1.map(x => x * 2);console.log
  • JS 中為啥 ['1', '7', '11'].map(parseInt) 返回 [1, NaN, 3]
    不相信我? 嘗試使用map和parseInt將字符串數組轉換為整數。你可能已經注意到,在我們的示例中,當輸入為11時,parseInt返回3,這對應於上表中的二進位列。函數參數JS 中函數調用,我們可以傳入任意的參數,即使它們不等於聲明時的函數參數的數量。缺少的參數被視為undefined 的,並且會忽略額外的參數,但會保存在類似數組的arguments對象中。
  • 【前端詞典】arr.filter(parseInt) 考查點為何
    其實這類題的目的很清楚,即考察:也就是考察 基礎知識的紮實程度,換句話說這是一道基礎題。map()、filter()、reduce() 等數組方法說明一下:map()、filter() 是 ES5 為數組定義的迭代方法, reduce() 是 ES5 為數組定義的歸併方法。
  • 【每日一題】(33題)面試官:你對圖論了解多少?(三)
    一、前言2020.12.23 立的 flag,每日一題,題目類型不限制,涉及到JavaScript,Node,Vue,React,瀏覽器,http,算法等領域。本文是:【每日一題】(33題)面試官:你對圖論了解多少?(三)每日一題前兩期:【每日一題】(32題)面試官:你對圖論了解多少?
  • Map經典面試題,你遇到了嗎?
    依稀記得我當初面試遇到過兩道涉及到Map的面試題,當時是有點眼急,會,直接手寫代碼確實又不會了。  工作了一段時間,再看完Map,自己又重新溫習了一下這兩道面試題,難,不難,只在一瞬息。  = new HashMap<>(); //第一種方法:利用String類的方法 char charAt(int index) 返回指定索引處的 char 值。
  • Java中如何將字符串轉換為的int?
    方式一、使用Integer 的 parseInt方式進行轉換:String str="9527";int foo =Integer.parseInt(str);// 此轉換會引發 NumberFormatException 異常可以進行catch處理,改造後代碼如下:String str="9527";int foo;try{foo =Integer.parseInt
  • 【每日一題】(39題)關於script標籤,你可能不知道的地方?
    【每日一題】(40題)關於script標籤,你可能不知道的地方?
  • 【每日一題】leetcode刷題指南之Longest Consecutive Sequence
    給你一個未排序的數組,要在O(n)的時間複雜度內求出最長的由數組中元素組成的連續序列的長度。
  • JavaScript之parseInt()方法
    parseInt(string, radix):用於解析一個字符串並返回指定基數的十進位整數或者NaNstring參數為被解析的值
  • 每日一題:力扣205-同構字符串
    勇往直前,決不放棄❞力扣205-同構字符串一、原題題目1.1 題目  給定兩個字符串 s 和 t ,判斷它們是否是同構的。如果 s 中的字符可以按某種映射關係替換得到 t ,那麼這兩個字符串是同構的。每個出現的字符都應當映射到另一個字符,同時不改變字符的順序。
  • BPF數據傳遞的橋梁——BPF Map(一)
    ,性能更好,尤其是你的 BPF 程序主要是在做收集時間序列型數據,如流量數據或指標等。請注意,該程序的編譯運行是基於 Linux 內核代碼中 BPF 示例環境,如果你還不熟悉,可以參考這篇博文[18]。
  • 【每日一題】(31題)面試官:你對圖論了解多少?(一)
    關注「松寶寫代碼」精選好文,每日一題作者:Overstarshttps://shuangxunian.gitee.io
  • 一道網紅面試題(騰訊、百度面試中都出現過)
    記得先點web前端學習圈關注我哦~在騰訊和百度的面試中,出現了這樣一道面試題,被大家親切的稱呼為網紅面試題,這道面試題就是。['1', '2', '3'].map(parseInt)的輸出結果是什麼?['1', '2', '3'].fliter(parseInt)的輸出結果是什麼?
  • 用這種解題方法,我解決了大部分的 leetcode 貪心算法題
    不信,我們再看看其他題目。 i = 0; i < nums.length; i++){            map.put(nums[i],map.getOrDefault(nums[i],0) + 1);        }        for(int key : map.keySet()){            queue.offer(new Obj(key,map.get
  • 哈希表:map等候多時了
    ❞第1題. 兩數之和給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,並返回他們的數組下標。你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素不能使用兩遍。
  • Java String轉int還有這種寫法
    之前我寫了一篇《老師,你確定Java注釋不會被執行嗎》,結果文章在知乎小火了一把,將近 10 萬人閱讀。有愛裝逼的同行批評說,標題誇大了;同時,也有很多初學者表示,漲見識了,之前從來不知道這個知識點,這下學到了。必須得承認一點,我寫的大多數技術文章都是針對初學者的,因為我覺得他們最需要幫助,這也是我一直堅持分享的初衷。
  • 哈希表:其實需要哈希的地方都能找到map的身影
    四數之和,第15題.三數之和差不多,其實差很多。「本題是使用哈希法的經典題目,而第18題. 四數之和,第15題.三數之和 並不合適使用哈希法」,因為三數之和和四數之和這兩道題目使用哈希法在不超時的情況下做到對結果去重是很困難的,很有多細節需要處理。
  • 44個 Javascript變態題,你遇到過幾個? 帶有題解析
    第1題["1", "2", "3"].map(parseInt)知識點:首先, map接受兩個參數, 一個回調函數 callback, 一個回調函數的this值其中回調函數接受三個參數 currentValue, index, arrary;而題目中, map只傳入了回調函數--parseInt.