[面试官系列]数组中查找元素下标

面试题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

相关文章
相关标签/搜索