map( ) 、filter( )、reduce()、foreach()的用法详解
今天给大家总结一下ES6中的军训数组的新方法。话不多说,开车 跟住思路肯定能懂的
1. map()
map =====> 映射
我们通过一段代码来看看,这是一段简单的map()循环的代码 参数:item(数组元素)、index(序列)、arr(数组本身)
let num = [100, 70, 20] let result= num.map((item,index) => { if(item>=60){ return '及格'+index }else{ return '不及格'+index } }) alert(result)
代码运行的结果为:
好通过以上的例子我们来总结特点:
1、创建新数组
2、不改变原数组
3、输出的是return什么就输出什么新数组
4、回调函数参数,item(数组元素)、index(序列)、arr(数组本身)。:上边的例子里没有第三个参数是可以的
5、使用return操作输出,会循环数组每一项,并在回调函数中操作
2.filter()
filter ========> 过滤器
这个是用来过滤掉数组里边不符合规定的元素。来我们继续来看例子,甲乙丙三个人的成绩是如下 我们要挑出谁及格了。参数:item(数组元素)、index(序列)、arr(数组本身)
let num = [100, 70, 20] let result = num.filter(item=>item>=60) alert(result)
结果为:大家可能觉得这一眼就能看出来,那么全校有1w人效果就明显了。
好通过以上的例子我们来总结特点:
1、创建新数组
2、不改变原数组
3、输出的是判断为true的数组元素形成的新数组
4、回调函数参数,item(数组元素)、index(序列)、arr(数组本身)
5、使用return操作输出,会循环数组每一项,并在回调函数中操作
3.reduce()
reduce =========> 汇总
我们可以通过reduce()来计算一组数组的平均值,总和等信息,参数: tmp(第一次为数组第一项,之后为上一操作的结果) item(数组的下一项) index(next项的序列) arr(数组本身)
let num = [100, 70, 20] let result = num.reduce((tmp,item,index)=>{ if(index==num.length-1){ return (tmp+item)/num.length } else{ return item+tmp } } alert(result)
因为计算机计算加法:也是两两相加所以上文例子中,先计算100+70 在计算 170 +20 才能得到结果,最后取得平均值 结果就不给大家显示了 就是 190/3的平均值(是啥额63吗 除不开啊…随便写的数字)
特点:
1、创建新数组
2、不改变原数组
3、输出的是return叠加什么就输出什么 新数组
4、回调函数参数 参数 tmp(第一次为数组第一项,之后为上一操作的结果) item(数组的下一项) index(next项的序列) arr(数组本身) 回调函数后的改变第一项参数。(不影响原数组)
5、使用return操作输出,会循环数组每一项,并在回调函数中操作
4.foreach()
forEach =========> 循环
上段小代码
let num = [100, 70, 20] let result = num.forEach((value, index) => { alert(value + '----------' + index) })
结果:
100-------------------0
70 -------------------1
20 -------------------2
特点:
1.遍历数组全部元素,利用回调函数对数组进行操作
2.自动遍历数组.length次数,且无法break中途跳出循环不可控
3.不支持return操作输出,return只用于控制循环是否跳出当前循环
4.因此难操作成新数组,新值
map( ) 、filter( )、reduce()、foreach()的方法讲解就OK了~~~~~~~