一道網(wǎng)紅面試題(騰訊、百度面試中都出現(xiàn)過(guò))

在騰訊和百度的面試中,出現(xiàn)了這樣一道面試題,,被大家親切的稱呼為網(wǎng)紅面試題,這道面試題就是。['1', '2', '3'].map(parseInt)的輸出結(jié)果是什么?['1', '2', '3'].fliter(parseInt)的輸出結(jié)果是什么?

這個(gè)面試題,面試官可能不僅僅需要你說(shuō)出他的結(jié)果,還需要你知道為什么會(huì)出現(xiàn)這樣的結(jié)果。

一、關(guān)鍵語(yǔ)法

1、parseInt

2、parseFloat

先看看parseInt和parseFloat的語(yǔ)法和使用,以便后續(xù)在實(shí)際例子中解釋。

二、Map

1、['1', '2', '3'].map(parseInt)

其實(shí)在使用map時(shí),map的callback的第二個(gè)參數(shù)index引索值就成為parseeInt的radix值。['1', '2', '3'].map(parseInt)在遍歷的過(guò)程。其實(shí)是經(jīng)歷了下面的過(guò)程。

parseInt('1', 0):radix的值為0,判斷字符串發(fā)現(xiàn)介于1~9,用10進(jìn)制轉(zhuǎn)換,結(jié)果為1.

parseInt('2', 1):radix的值為1,如果該參數(shù)小于 2 或者大于 36,則 parseInt() 將返回 NaN。

parseInt('3', 2): radix的值為2,這就意味著字符串將被解析成字節(jié)數(shù),也就是僅僅包含數(shù)值0和1。parseInt的規(guī)范指出,它僅嘗試分析第一個(gè)字符的左側(cè)。這個(gè)字符串的第一個(gè)字符是“3”,它并不是基礎(chǔ)基數(shù)2的一個(gè)有效數(shù)字。所以這個(gè)子字符串將被解析為空。如果子字符串被解析成空了,函數(shù)將返回為NaN。

2、['1', '2', '3'].map(parseFloat)

parseFloat相對(duì)于parseInt比較簡(jiǎn)單,不用考慮第二個(gè)參數(shù),只需要看第一個(gè)參數(shù)是否能正常轉(zhuǎn)換為數(shù)字就行。

一個(gè)小的知識(shí)點(diǎn):如何快速將一個(gè)字符串?dāng)?shù)組轉(zhuǎn)化為數(shù)字類型的數(shù)組

三、filter

1、['1', '2', '3'].filter(parseInt)

filter 為數(shù)組中的每個(gè)元素調(diào)用一次 callback 函數(shù),并利用所有使得 callback 返回 true 或等價(jià)于 true 的值的元素創(chuàng)建一個(gè)新數(shù)組。

parseInt('1', 0):radix的值為0,判斷字符串發(fā)現(xiàn)介于1~9,用10進(jìn)制轉(zhuǎn)換,結(jié)果為1,所以callback的結(jié)果等價(jià)于true,返回元素'1'。

parseInt('2', 1):radix的值為1,如果該參數(shù)小于 2 或者大于 36,則 parseInt() 將返回 NaN,結(jié)果不等價(jià)于true,不返回。

parseInt('3', 2): radix的值為2,這就意味著字符串將被解析成字節(jié)數(shù),也就是僅僅包含數(shù)值0和1。parseInt的規(guī)范指出,它僅嘗試分析第一個(gè)字符的左側(cè)。這個(gè)字符串的第一個(gè)字符是“3”,它并不是基礎(chǔ)基數(shù)2的一個(gè)有效數(shù)字。所以這個(gè)子字符串將被解析為空。如果子字符串被解析成空了,函數(shù)將返回為NaN。

2、['1', '2', '3'].filter(parseFloat)

使用parseFloat時(shí),遍歷之后結(jié)果的每一項(xiàng)都是結(jié)果等價(jià)于true,所以全部返回。

<<<前端是我一輩子的信仰,寫代碼直到50歲>>>
?關(guān)注微信公眾號(hào):web前端學(xué)習(xí)圈回復(fù)關(guān)鍵詞【簡(jiǎn)書(shū)】送你50G最適合2020年學(xué)習(xí)的web前端零基礎(chǔ)入門教程(視頻+筆記+素材+源碼+項(xiàng)目實(shí)戰(zhàn))
?另外公眾號(hào)每天都會(huì)分享學(xué)習(xí)方法,知識(shí)干貨,實(shí)戰(zhàn)案例,面試技巧,經(jīng)驗(yàn)分享等相關(guān)文章,關(guān)注web前端學(xué)習(xí)圈=關(guān)注5000+前端大牛

四、反思

通過(guò)上述的map、filter,我們聯(lián)想到數(shù)組其他方法,當(dāng)使用parseInt或者是parseFloat來(lái)替代callback使用,你只需要理解到parseInt和parseFloat工作原理,那么針對(duì)這類問(wèn)題,其實(shí)結(jié)果都是能很快輸出的,也能套用上面的解析過(guò)來(lái),來(lái)回答面試官。這類面試題也不是什么難題了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前端開(kāi)發(fā)面試題 面試題目: 根據(jù)你的等級(jí)和職位的變化,入門級(jí)到專家級(jí),廣度和深度都會(huì)有所增加。 題目類型: 理論知...
    怡寶丶閱讀 2,683評(píng)論 0 7
  • @轉(zhuǎn)自GitHub 介紹js的基本數(shù)據(jù)類型。Undefined、Null、Boolean、Number、Strin...
    YT_Zou閱讀 1,316評(píng)論 0 0
  • 例題: [1,2,3].map(parseInt) 先看看 map 和 parseInt 用法 Array.pro...
    U17閱讀 623評(píng)論 0 0
  • JavaScript 介紹js的基本數(shù)據(jù)類型。 Undefined、Null、Boolean、Number、St...
    cuikangjie閱讀 522評(píng)論 0 3
  • 原文作者:justjavac原文地址:http://justjavac.com/javascript/2014/0...
    飛魚(yú)YE閱讀 551評(píng)論 0 2

友情鏈接更多精彩內(nèi)容