面試題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 咯。固然這裏基本上也會出現一波用循環去解決的。基本上也會讓用代碼去實現。
好了。今天的面試題分析就到這裏了。下面咱們來總結一下。