map( ) 、filter( )、reduce()、foreach()的用法

发布时间 2023-07-19 13:40:57作者: dtdxrk

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了~~~~~~~