详解ES6数组方法find()、findIndex()的总结


Posted in Javascript onMay 12, 2020

本文主要讲解ES6数组方法find()findIndex(),关于JS的更多数组方法,可参考以下:

1. find()

该方法主要应用于查找第一个符合条件的数组元素,即返回通过测试(函数内判断)的数组的第一个元素的值。

它的参数是一个回调函数,为数组中的每个元素都调用一次函数执行。在回调函数中可以写你要查找元素的条件,当条件成立为true时,返回该元素,之后的值不会再调用执行函数。如果没有符合条件的元素,返回值为undefined

例:

① 以下代码在myArr数组中查找元素值大于5的元素,找到后立即返回,并不会继续往下执行。返回的结果为查找到的元素:

const myArr=[1,2,3,4,5,6,7,8,9];
var v=myArr.find(value=>value>5);
console.log(v);

结果:

详解ES6数组方法find()、findIndex()的总结

② 如果把条件改为>10,没有符合元素,则返回undefined:

const myArr=[1,2,3,4,5,6,7,8,9];
var v=myArr.find(value=>value>10);
console.log(v);

结果:

详解ES6数组方法find()、findIndex()的总结

③ 它的回调函数有三个参数。value:当前的数组元素。index:当前索引值。arr:被查找的数组。

例:

查找索引值为5的元素,结果显示6:

const myArr=[1,2,3,4,5,6];
var v=myArr.find((value,index,arr)=>{
 return index===5;
});
console.log(v);

结果:

详解ES6数组方法find()、findIndex()的总结

注意:

  • find() 对于空数组,函数是不会执行的。
  • find() 并没有改变数组的原始值。

2. findIndex()

  • findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。
  • 当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置注:find()返回的是元素),之后的值不会再调用执行函数。如果没有符合条件的元素返回 -1注:find()返回的是undefined)。
  • findIndex()与find()的使用方法相同,findIndex()当中的回调函数也是接收三个参数,与find()相同。
  • findIndex()方法实现是通过循环遍历查找。应用场景广泛,可以查找大于等于小于,表达式可以随便写。实际上相当于一个for循环,只不过找到了你不需要自己退出。

语法:

array.findIndex(function(currentValue, index, arr), thisValue);

例①:

const myArr=[
 {
 id:1,
 Name:"张三"
 },
 {
 id:2,
 Name:"李四"
 },
 {
 id:3,
 Name:"王五"
 },
 {
 id:4,
 Name:"赵六"
 }
];
var i0=myArr.findIndex((value)=>value.id==1);
console.log(i0); 
var i1=myArr.findIndex((value)=>value.id==2);
console.log(i1); 
var i2=myArr.findIndex((value)=>value.id==3);
console.log(i2); 
var i3=myArr.findIndex((value)=>value.id==4);
console.log(i3); 
var i4=myArr.findIndex((value)=>value.id==5);
console.log(i4);

结果:

详解ES6数组方法find()、findIndex()的总结

例②:

const myArr = [1,2,3,4,5,6,7,8,9];
function bigNum(ele){
 return ele > 6;
}
console.log(myArr.findIndex(bigNum));

结果(也就是数组中第一个大于6的数,即“7”所在位置的索引):

详解ES6数组方法find()、findIndex()的总结

例③:可以用来返回符合大于输入框中数字的数组索引

var ages = [2,4,6,8,10];
 
function checkAdult(age) {
 return age >= document.getElementById("ageToCheck").value;
}
 
function myFunction() {
 document.getElementById("demo").innerHTML = ages.findIndex(checkAdult);
}

注意:

  • findIndex() 对于空数组,函数是不会执行的。
  • findIndex() 并没有改变数组的原始值。

到此这篇关于详解ES6数组方法find()、findIndex()的总结的文章就介绍到这了,更多相关ES6 find() findIndex()内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript css在IE和Firefox中区别分析
Feb 18 Javascript
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
Aug 23 Javascript
Jquery post传递数组方法实现思路及代码
Apr 28 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
Jun 08 Javascript
AngularJS入门教程(零):引导程序
Dec 06 Javascript
jquery使用remove()方法删除指定class子元素
Mar 26 Javascript
Js遍历键值对形式对象或Map形式的方法
Aug 08 Javascript
JS产生随机数的用法小结
Dec 10 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
Feb 23 Javascript
高性能js数组去重(12种方法,史上最全)
Dec 21 Javascript
使用Taro实现小程序商城的购物车功能模块的实例代码
Jun 05 Javascript
google广告之另类js调用实现代码
Aug 22 Javascript
JQuery表单元素取值赋值方法总结
May 12 #jQuery
JavaScript或jQuery 获取option value值方法解析
May 12 #jQuery
Node.js API详解之 console模块用法详解
May 12 #Javascript
基于JS实现视频上传显示进度条
May 12 #Javascript
vue项目中使用bpmn-自定义platter的示例代码
May 11 #Javascript
Vue实现图片轮播组件思路及实例解析
May 11 #Javascript
浅谈webpack构建工具配置和常用插件总结
May 11 #Javascript
You might like
用Php编写注册后Email激活验证的实例代码
2013/03/11 PHP
PHP实现的简单分页类及用法示例
2016/05/06 PHP
yii gridview实现时间段筛选功能
2017/08/15 PHP
Javascript 面向对象 继承
2010/05/13 Javascript
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
复制js对象方法(详解)
2013/07/08 Javascript
jquery图片不完全按比例自动缩小的简单代码
2013/07/29 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
JavaScript 作用域链解析
2014/11/13 Javascript
javascript的push使用指南
2014/12/05 Javascript
javascript文本模板用法实例
2015/07/31 Javascript
BootStrap的Datepicker控件使用心得分享
2016/05/25 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
AngularJS改变元素显示状态
2017/04/20 Javascript
Angular 项目实现国际化的方法
2018/01/08 Javascript
微信小程序组件传值图示过程详解
2019/07/31 Javascript
vuex存储token示例
2019/11/11 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
Python列表list数组array用法实例解析
2014/10/28 Python
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
python内置数据类型之列表操作
2018/11/12 Python
Python获取数据库数据并保存在excel表格中的方法
2019/06/12 Python
解决Python内层for循环如何break出外层的循环的问题
2019/06/24 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
Jupyter Notebook折叠输出的内容实例
2020/04/22 Python
基于selenium及python实现下拉选项定位select
2020/07/22 Python
如何用SQL语句进行模糊查找
2015/09/25 面试题
法制演讲稿
2014/09/10 职场文书
团代会开幕词
2015/01/28 职场文书
农村党支部承诺书
2015/04/30 职场文书
干部培训工作总结2015
2015/05/25 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android