[面試官系列]數組中查找元素下標

面試題1:如何在數組中查找元素的下標。API 和其餘實現方案均可以。 前端

答案1:面試題不難吧?基本上我面試過的人,都能說上來用 indexOf 實現,可是我這種魔鬼還會追問的。面試

我先來介紹一下 indexOf 的入參數組

Array.prototype.indexOf(查找的元素,開始查找的位置)

再來講一下 indexOf 的返回值。返回值爲數值類型,返回值爲查找到的元素的下標,若是沒找到返回-1。(前兩天有個前端實習生來面試,其實給個人感受還不錯,說的基本上很清晰,可是有一些核心點在說的時候沒說出來。我就讓他用代碼實現一下功能,而後就發現了問題,indexOf使用的不對,他說返回值是 Boolean。而後應該是涼了,由於還有其餘錯誤。)微信

面試題1追問1:返回值類型函數

面試題1追問2:如何判斷等於?是==?仍是===?spa

[1,'1'].indexOf(1);
indexOf 使用strict equality (不管是 ===, 仍是 triple-equals操做符都基於一樣的方法)進行判斷 searchElement與數組中包含的元素之間的關係。

面試題1追問3:有沒有找不到的值類型?對象? prototype

這裏要說一下,對象是能夠比對的,我這裏只是一個迷惑項。真實想考察的是NaN,前面說過了由於邏輯和===是同樣的。那麼NaN是惟一一個本身不等於本身的。因此若是有NaN會查找不到。code

[1,'1',NaN].indexOf(NaN);

面試題1追問4:還有其餘方案嗎? 對象

1. find blog

2. findIndex

3. filter、map、forEach、every、some、for循環

4. includes

這裏基本上就是繼續重複上面的問題了。

面試題1追問5:剛纔問題的查找元素下標。如今我想查找符合條件的元素下標值怎麼辦?

答案固然是 findIndex 咯。固然這裏基本上也會出現一波用循環去解決的。基本上也會讓用代碼去實現。

好了。今天的面試題分析就到這裏了。下面咱們來總結一下。

  1.  常見API的入參以及返回值
  2.  所選擇方案是否適配全類型(基本類型、對象、NaN)
  3.  所選擇方案是否存在類型轉換?
  4.  是否有其餘解決方案?
  5.  近似問題、好比說從固定值變爲條件?高階函數?遞歸?若是前面對了,後面基本就是加分項了。

微信公衆號:前端linong

clipboard.png

相關文章
相關標籤/搜索