今天来给大家分享下使用underscore在数组中查找指定元素。

在开发中,我们经常会遇到在数组中查找指定元素的需求,可能大家觉得这个需求过于简单,然而如何优雅的去实现一个 findIndex 和 findLastIndex、indexOf 和 lastIndexOf 方法却是很少人去思考的。本文就带着大家一起参考着 underscore 去实现这些方法。

在实现前,先看看 ES6 的 findIndex 方法,让大家了解 findIndex 的使用方法。

1. findIndex

ES6 对数组新增了 findIndex 方法,它会返回数组中满足提供的函数的第一个元素的索引,否则返回 -1。举个例子:

findIndex 会找出第一个大于 15 的元素的下标,所以最后返回 3。是不是很简单,其实,我们自己去实现一个 findIndex 也很简单。

2. 实现findIndex

思路自然很明了,遍历一遍,返回符合要求的值的下标即可。

3. findLastIndex

findIndex 是正序查找,但正如 indexOf 还有一个对应的 lastIndexOf 方法,我们也想写一个倒序查找的 findLastIndex 函数。实现自然也很简单,只要修改下循环即可。

4. createIndexFinder

然而问题在于,findIndex 和 findLastIndex 其实有很多重复的部分,如何精简冗余的内容呢?这便是我们要学习的地方,日后面试问到此类问题,也是加分的选项。

underscore 的思路就是利用传参的不同,返回不同的函数。这个自然是简单,但是如何根据参数的不同,在同一个循环中,实现正序和倒序遍历呢?

让我们直接模仿 underscore 的实现:

学习相关推荐(编程必备辅助):

①:搜索关注公众号“只会写BUG”,分享更多干货知识,资讯,教程等②:海量编程类资料零基础到高级亟待领取!!!

如果觉得对你有一丢丢帮助,麻烦动动你的小手指【关注】一下上面的公众号吧,或者【转发】让更多人看到该文章。大家也可积极后台给我留言,多多交流,共同进步。

在数组中查找指定元素_JavaScript之学underscore在数组中查找指定元素相关推荐

  1. 中求解数组中元素个数_JavaScript之学underscore在数组中查找指定元素

    今天来给大家分享下使用underscore在数组中查找指定元素. 在开发中,我们经常会遇到在数组中查找指定元素的需求,可能大家觉得这个需求过于简单,然而如何优雅的去实现一个 findIndex 和 f ...

  2. python中else的作用_享学课堂谈python中else的用途

    今天我能聊聊python中的else,大家都知道 Python 中else的基本用法是在条件控制语句中的 if...elif...else...,但是else 还有两个其它的用途,一是用于循环的结尾, ...

  3. Java 数组常用操作二(扩充、扩容、重复数据、动态数组、数组差集、数组交集、查找指定元素、判断是否相同、数组合并)

    数组扩容(扩充) public class Main {public static void main(String[] args) {String[] names = new String[] { ...

  4. 34. 在排序数组中查找元素的第一个和最后一个位置给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标

    34. 在排序数组中查找元素的第一个和最后一个位置 难度中等2012 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target.请你找出给定目标值在数组中的开始位置和结束位置. 如果 ...

  5. js remove 当前元素_详解js删除数组中的指定元素

    本篇文章将会给大家介绍两种删除数组中的指定元素的方式,分别为: 1.单独定义一个的函数,通过函数来删除指定数组元素. 2.为Array对象定义了一个removeByValue的方法,在调用方法来删除指 ...

  6. JavaScript - 根据指定下标删除数组中的元素(支持二维对象数组)

    前言 网上的大部分方法及原生 splice 都存在一定的问题,本文做一个函数封装,传入数组及下标即可自动完成移除. 很多时候,我们需要移除指定下标的数组元素, 例如我有一个数组 ['A', 'B'] ...

  7. html中splice向数组添加元素,js中splice()的强大(删除,插入或替换数组的元素)

    1.删除-用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数) 2.插入-向数组指定位置插入任意项元素.三个参数,第一个参数(其实位置),第二个参数(0),第三个参数( ...

  8. php删除二维数组元素_php怎样删除二维数组中的元素

    php怎样删除二维数组中的元素 发布时间:2020-11-03 10:22:40 来源:亿速云 阅读:68 作者:小新 这篇文章主要介绍了php怎样删除二维数组中的元素,具有一定借鉴价值,需要的朋友可 ...

  9. 指针数组下标JAVA_Java语言中可用下标和指针两种方式表示数组元素。

    [判断题]一行可以写多条预处理命令 [判断题]如果一个java程序中有多个类,编译后只生成一个字节码文件,其名字同主类名一致. [判断题]Protected类型的实例变量只能在本类中使用,其他类中不可 ...

最新文章

  1. 【直播】王茂霖:二手车交易价格预测-千变万化特征工程(河北高校数据挖掘邀请赛)
  2. java hdfs创建文件_使用HDFS java api 创建文件出错。
  3. 普华永道2030汽车产业报告 私家车真正Out了!
  4. 全排列(含递归和非递归的解法)
  5. 前端相关的一些小工具
  6. linux 基准测试_如何对Linux系统进行基准测试:3个开源基准测试工具
  7. Java就应该这样学pdf
  8. Kafka核心源码解析 - SocketServer源码解析
  9. 如何把多个tomcat加入到window服务中
  10. Visitor Pattern
  11. Nginx设置404错误页面跳转
  12. 单点登录原理与简单实现
  13. OpenCV Python 椭圆 和 FDDB 数据库
  14. python程序员买西瓜代码_朴素贝叶斯python代码实现(西瓜书)
  15. Spring-AOP切入点表达式详解
  16. 4万字【Python高级编程】保姆式教学,330页PDF10万字的知识点总结
  17. AWS Academy 学习平台建立 Learner Lab - 教师
  18. 【转】专家推荐 13个优秀的UML建模工具软件
  19. 如何多个进程监听同一个端口
  20. C/C++ 算法设计与分析实验报告

热门文章

  1. c语言下列循环的循环次数,在C语言中,若i=3,则语句 while (i) { i--; break;}的循环次数为 答案:1...
  2. CS229——NODE1part2
  3. Tensorflow--图
  4. jq发送动态变量_「系统架构」Nginx调优之变量的使用(3)
  5. 周五下午3.5h直播丨今年第1期大咖讲坛:数据库高可用容灾方案的实践与探索...
  6. 史上最全近百条Oracle DBA日常维护SQL脚本指令
  7. 面试官:说一下Jena推理
  8. 看故事学Redis:再不懂,我怀疑你是假个开发
  9. LiteOS:盘点那些重要的数据结构
  10. 前端面试常考题:JS垃圾回收机制