map和parseInt結合使用

2021-03-02 Yoho前端

 話不多說進入正題,在快手中看到過一個考題是關於map和parseInt結合使用輸出結果值。

[1,2,3,4,5].map(parseInt)輸出值

1. 單獨使用map和parseInt感覺沒有什麼問題,但是結合map以及parseInt就可能會感到暈頭轉向的,別慌,慢慢分析即可。答案是多少呢?我就不賣關子了,下面我就公布一下正確答案:[1, NaN, NaN, NaN, NaN]。ps:題外話map和parseInt我就不再講解了,不懂的可以查閱相關方法的使用。原因:由於map的回調函數的參數index索引值作了parseInt的基數radix,導致出現超範圍的radix賦值和不合法的進位解析。(推導過程可以看最後我參考的連結地址)看了原因之後想必大家有所發現了,其實[1,2,3,4,5].map(parseInt)可以等價於下面代碼寫法:
parseInt(1, 0); parseInt(2, 1); parseInt(3, 2); parseInt(4, 3); parseInt(5, 4); 

這樣就和[1,2,3,4,5].map(parseInt)輸出的值對應上了。parseInt延展出一個有趣的問題,parseInt(12, 2)輸出1,同樣parseInt(1234, 2)也是輸出1,parseInt(11234111, 2)輸出3。其實很簡單,關於二進位(同理其他的進位也是一樣)包含0-1,等於或者超過2parseInt會截取沒有超過的部分。

參考:解惑 ["1", "2", "3"].map(parseInt) 為何返回[1,NaN,NaN]

https://blog.csdn.net/freshlover/article/details/19034079

相關焦點

  • 【春節日更】變態面試題之map與parseInt的結合輸出
    callback生成新數組元素的函數,使用三個參數:callback 數組中正在處理的當前元素的索引。語法parseInt(string, radix);參數string要被解析的值。如果參數不是一個字符串,則將其轉換為字符串(使用  ToString 抽象操作)。字符串開頭的空白符將會被忽略。
  • 【每日一題】你不知道的 map(parseInt)
    問 ['10','10','10','10','10'].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將字符串數組轉換為整數。令人困惑的是,這意味著字符串「false」,字符串「0」,空對象{}和空數組[]都是真的。 使用使用 Boolean 方法來驗證,如 Boolean("0")。出於我們的目的,接下來只要記住0是假的就行了。基數在數學上,基數(cardinal number)是集合論中刻畫任意集合大小的一個概念。
  • 【前端詞典】arr.filter(parseInt) 考查點為何
    thisObject:在執行回調函數時定義的 this 對象(沒有傳遞或者為 null,將會使用全局對象)。 // initialValue: 作為第一次調用 callback 函數時的第一個參數的值。
  • Java中如何將字符串轉換為的int?
    方式一、使用Integer 的 parseInt方式進行轉換:String str="9527";int foo =Integer.parseInt(str);// 此轉換會引發 NumberFormatException 異常可以進行catch處理,改造後代碼如下:String str="9527";int foo;try{foo =Integer.parseInt
  • JavaScript之parseInt()方法
    ,如果該值不是一個字符串,則會隱式的使用toString()方法轉化為字符串,字符串首尾的空格會被忽略,如果該值不能轉化為數字或者第一個非空字符不能轉化為數字則返回NaNradix可選參數,值為2~36之間的整數,解析的基數,例如2為二進位數,如果省略該參數或者該值為0,則會以十進位解析,如果該值小於2或者大於36,則會返回NaN。
  • json for modern c++的使用
    json for modern c++是一款非常好用的json庫,具有語法直觀和使用簡單的特點,並且是用C++11標準編寫的,此外還支持STL和json容器之間的轉換,可謂集方便又強大。本文推薦給廣大C++程式設計師,相信學習完本文之後,在處理json時一定會得心應手。
  • BPF數據傳遞的橋梁——BPF Map(一)
    這是一個實戰系列文章,它是eBPF 學習計劃[1]裡面的應用場景之網絡部分,終極目標是源碼級別學習雲原生網絡方案 Cilium(聲明:下文提到的 BPF 字樣是泛指,包括 cBPF 和 eBPF)。本篇文章從源碼級別學習 BPF Map 使用場景和工作原理,祝大家閱讀愉快。
  • Python基礎應用:map與reduce
    從運行效率的角度講,map()等其他python內置函數是效率最高的,其次是列表解析,再次是生成器和for循環,while循環最慢。以下是map()和reduce()的使用方法和例子:In [1]:# map() 最常見的用法是對列表做映射l = [ i for i in range(9)]print('l: ', l)print('\n')# 將匿名函數作為參數傳遞給map()函數# 匿名函數相關內容詳見
  • Tensorflow2.0 TFRecord使用教程
    tf.train.Feature函數,函數參數為bytes_list、float_list、int64_list三種,是tf.train.Feature接受的三種類型,step3使用的是tf.train.Features,有個s,這裡需要注意,而且函數參數為feature個人理解:tf.train.Feature和tf.train.Features
  • Pandas三大利器-map、apply、applymap
    本文中介紹了 pandas中的三大利器: map、apply、applymap 來解決上述同樣的需求。模塊中的randint方法df = pd.DataFrame({"height":np.random.randint(160,190,100), "weight":np.random.randint(60,90,100), "smoker":[boolean[x] for x in
  • Java String轉int還有這種寫法
    那就有必要先把字符串轉成整形再來做運算了,常見的做法有兩種:第一種,使用 Integer.valueOf(),它將返回一個包裝器類型 Integer,當然可以通過自動拆箱的方式將其轉成 int 類型。>第二種,使用 Integer.parseInt(),它將返回一個基本數據類型 int。
  • 常用Hive函數的學習和總結
    今天來小結一下工作中經常會使用到的一些Hive函數。關於Hive函數的總結,網上早有十分全面的版本。參考:https://blog.csdn.net/doveyoung8/article/details/80014442。本文主要從最常用和實用的角度出發,說明幾個使用頻率較高的函數,更注重使用函數組合來解決實際問題而不局限於單個函數的使用。
  • MapStruct的使用,java實體類的轉換
    準備工作:Maven配置,需要我們在pom文件中添加以下引用<properties><org.mapstruct.version>1.2.0.Final</org.mapstruct.version></properties><dependency><groupId>org.mapstruct
  • Android:float、int等與string相互轉換
    如何將字串 String 轉換成整數 int?有兩種方法1) int i = Integer.parseInt([String]); 或者int i = Integer.parseInt([String],[int radix]);2) int i = Integer.valueOf(my_str).intValue(); 註: 字串轉成 Double, Float, Long
  • 理解pandas中的apply和map的作用和異同
    和apply方法Series: apply和mapDataFrame: applySeries.mapSeries.map(arg)傳入的arg : 操作函數、字典或Series返回Seriesimport pandas as pdimport numpy as
  • Golang入門教程——map篇
    這些數據結構的名稱雖然不盡相同,背後的技術支撐也不一定一樣,比如說C++的map是紅黑樹實現的,Java中的hashmap則是通過hash表。但是使用起來的方法都差不多,除了Java是通過get方法獲取鍵值之外,C++、Python和golang都是通過方括號獲取的。
  • 初識 ArrayMap
    ;其兩者使用場景不同,append() 無需驗證即可將元素追加到數組末尾的特殊快速路徑,要求是數組必須足夠大;當數據需要插入到數組中間時調用 put() 方式;元素刪除public V remove(Object key) {    final int index = indexOfKey(key);
  • Java 8 Map,Filter和Collect示例
    map()函數是Stream類中的一個方法,它表示函數式編程概念。簡單來說,map()通過應用於函數將一個對象轉換為另一個對象。這就是Stream.map(函數映射器)將函數作為參數的原因。例如,通過使用map()函數,您可以通過將Integer.valueOf()方法應用於輸入列表上的每個String,將String列錶轉換為List of Integer。您只需要一個映射函數將一個對象轉換為另一個對象,然後,map()函數將為您進行轉換。它也是一個中間Stream操作,這意味著您可以調用其他Stream方法,如過濾器,或者在此處收集以創建一系列轉換。