今天本文的主要内容是:遍历数组,检测数组中元素是否满足指定条件,返回满足条件的首个数组元素。简单来说:就是根据指定条件过滤数组元素,返回符号条件的第一个数组元素的值。
下面我们来介绍3种方法,先从熟悉的for循环开始,然后介绍2种内置函数--看看这两个函数能怎么过滤数组元素,获取第一个符合条件的元素。
方法1:利用for循环
实现思想:利用for语句来遍历数组,在每次循环中判断数组元素是否符合条件;当有第一个元素满足条件,就立马输出,然后使用break语句退出整个循环。
下面通过实例来具体了解一下:
var ages = [3, 10, 18, 20]; for(var i=0;i<ages.length;i++){ if (ages[i] >= 18) { console.log(ages[i]); break; } }
ages数组中大于等于 18的元素有 18和20两个,但18在20前,因此满足添加的第一个元素为18。因此输出结果为:
var a = [1,编程之家网, 10, red, 20,22]; for(var i=0;i<a.length;i++){ var re = /^[0-9]+.?[0-9]*/;//判断字符串是否为数字 //判断正整数/[1−9]+[0−9]∗]∗/ if (!re.test(a[i])) { console.log(a[i]); break; } }
输出结果:
find() 方法为数组中的每个元素都调用一次函数,在回调函数内利用给定添加过滤元素,返回第一个通过检测的元素。
语法:
array.find(function callbackfn(Value,index,array),thisValue)
function callbackfn(Value,index,array)
:一个回调函数,不可省略,最多可接受三个参数:
value:当前数组元素的值,不可省略。
index:当前数组元素的数字索引。
array:当前元素属于的数组对象。
返回值:返回符合测试条件的第一个数组元素值,如果没有符合条件的则返回 undefined。
下面通过实例来具体了解一下:
function checkAdult(age) { return age >= 18; } var ages = [3, 10, 18, 20]; var age=ages.find(checkAdult); console.log(age);
输出结果:
18
function checkAdult(num) { var re = /^[0-9]+.?[0-9]*/;//判断字符串是否为数字 //判断正整数/[1−9]+[0−9]∗]∗/ return !re.test(num); } var a = [1,编程之家网, 10, red, 20,22]; console.log(a.find(checkAdult));
输出结果:
findindex() 方法为数组中的每个元素都调用一次函数,在回调函数内利用给定添加过滤元素,返回第一个通过检测的元素的索引位置。
语法:
array.findindex(function callbackfn(Value,index,array),thisValue)
该方法的语法和 find()类似,参数取值可以参数find()方法。
下面通过实例来具体了解一下:
function checkAdult(age) { return age >= 18; } var ages = [3, 10, 18, 20]; var age=ages.findindex(checkAdult); console.log(age); console.log(ages[age]);
findindex() 方法可以返回第一个满足条件的元素索引,根据该索引,使用“数组名[索引]
”的形式就可以获取到元素值。因此输出结果为:
function checkAdult(num) { var re = /^[0-9]+.?[0-9]*/;//判断字符串是否为数字 //判断正整数/[1−9]+[0−9]∗]∗/ return !re.test(num); } var a = [1,编程之家网, 10, red, 20,22]; var index=a.findindex(checkAdult); console.log(index); console.log(a[index]);
输出结果为:
好了,就说到这里了,有需要的可以看:javascript视频教程