【面试官系列】数组中查找元素下标

简介: 【面试官系列】数组中查找元素下标

1460000022180415.webp.jpg


面试题1:如何在数组中查找元素的下标。API 和其他实现方案都可以。


答案1:面试题不难吧?基本上我面试过的人,都能说上来用 indexOf 实现,但是我这种魔鬼还会追问的。


我先来介绍一下 indexOf 的入参


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


再来说一下 indexOf 的返回值。返回值为数值类型,返回值为查找到的元素的下标,如果没找到返回-1。(前两天有个前端实习生来面试,其实给我的感觉还不错,说的基本上很清晰,但是有一些核心点在说的时候没说出来。我就让他用代码实现一下功能,然后就发现了问题,indexOf使用的不对,他说返回值是 Boolean。然后应该是凉了,因为还有其他错误。)


面试题1追问1:返回值类型


面试题1追问2:如何判断等于?是==?还是===?


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


indexOf 使用strict equality (无论是 ===, 还是 triple-equals操作符都基于同样的方法)进行判断 searchElement与数组中包含的元素之间的关系。

面试题1追问3:有没有找不到的值类型?对象?


这里要说一下,对象是可以比对的,我这里只是一个迷惑项。真实想考察的是NaN,前面说过了因为逻辑和===是一样的。那么NaN是唯一一个自己不等于自己的。所以如果有NaN会查找不到。


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


面试题1追问4:还有其他方案吗?


1. find


2. findIndex


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


4. includes


这里基本上就是继续重复上面的问题了。


面试题1追问5:刚才问题的查找元素下标。现在我想查找符合条件的元素下标值怎么办?


答案当然是 findIndex 咯。当然这里基本上也会出现一波用循环去解决的。基本上也会让用代码去实现。


好了。今天的面试题分析就到这里了。下面我们来总结一下。


  1. 常见API的入参以及返回值


  1. 所选择方案是否适配全类型(基本类型、对象、NaN)


  1. 所选择方案是否存在类型转换?


  1. 是否有其他解决方案?


  1. 近似问题、比如说从固定值变为条件?高阶函数?递归?如果前面对了,后面基本就是加分项了。
相关文章
|
1月前
|
算法
【数组相关面试题】LeetCode试题
【数组相关面试题】LeetCode试题
|
1月前
|
存储
力扣面试经典题之数组/字符串
力扣面试经典题之数组/字符串
23 0
|
2月前
|
算法 前端开发
经典面试题:扁平化嵌套数组
经典面试题:扁平化嵌套数组
22 0
|
2月前
|
NoSQL Redis 数据库
面试02-Redis 中的过期元素是如何被处理的?
面试02-Redis 中的过期元素是如何被处理的?
57 0
|
3月前
|
存储 JavaScript 前端开发
【面试题】JS的14种去重方法,看看你知道多少(包含数组对象去重)
【面试题】JS的14种去重方法,看看你知道多少(包含数组对象去重)
|
3月前
|
前端开发 JavaScript Java
【面试题】说说 JavaScript数组常见的操作 (20个)
【面试题】说说 JavaScript数组常见的操作 (20个)
|
21天前
|
存储 算法
[经典面试题]169. 多数元素
[经典面试题]169. 多数元素
|
1月前
|
算法 测试技术 索引
力扣面试经典题之数组/字符串(二)
力扣面试经典题之数组/字符串(二)
13 0
|
2月前
|
JavaScript 前端开发 索引
【JavaScript】面试手撕数组原型链(易)
续借上文,这篇文章主要讲的是数组原型链相关的考题,有些人可能会纳闷,数组和原型链之间有什么关系呢?我们日常使用的数组forEach,map等都是建立在原型链之上的。举个🌰,如我有一个数组const arr = [1,2,3]我想要调用arr.sum方法对arr数组的值进行求和,该如何做呢?我们知道数组没有sum函数,于是我们需要在数组的原型上定义这个函数,才能方便我们调用,具体代码如下。接下来我们就是采用这种方式去实现一些数组常用的方法。
39 6
|
2月前
|
JavaScript 前端开发
【JavaScript】面试手写题精讲之数组(上)
该专题主要是讲解我们在面试的时候碰到一些JS的手写题, 确实这种手写题还是比较恶心的。有些时候好不容易把题目写出来了,突然面试官冷不丁来一句有没有更优的解法,直接让我们僵在原地。为了解决兄弟们的这些困扰,这个专题于是就诞生啦。我们会将一些常见的不是最优解的答案作为对比,方便大家更好理解。
38 3