一张图搞定ES6新语法中最难理解的数组方法

159 阅读3分钟

1.map方法

作用: 映射数组(遍历数组,修改数组中的每一个元素)

特点:

a.回调函数执行次数==数组长度

b.回调函数内部的return

  • return 新数组的元素
  • 没有return 返回值都是undefined

c.map方法的返回值

  • 返回映射之后的新数组

    let arr = [81, 90, 100, 23, 50]
    //需求:找出偶数的元素
     let res = arr.filter(item => item % 2 == 0)
            console.log(res)
    

2.filter方法

作用:筛选数组,把符合筛选条件的元素添加到新数组中

特点:

a.回调函数执行次数==数组长度

b.回调函数的return

  • return true: 符合筛选条件,放入新数组中
  • return false: 不符合筛选条件,不放入数组

c.filter方法的返回值

  • 返回筛选之后的新数组
let arr = [81, 90, 100, 23, 50]
        //需求:找出偶数的元素
let res = arr.filter(item => item % 2 == 0)
        console.log(res)

3.forEach方法

作用:遍历数组,是高级阶段的for循环

特点:

a.回调函数执行次数==数组长度

b.回调函数内部的return

  • 没有返回值

c.forEach方法的返回值

  • 没有返回值
let arr = [45,60,88,90,20]
​
       arr.forEach((item,index)=>{
           console.log(item,index)
       })

4.some方法

作用: 判断数组中是否有符合条件的元素(逻辑或||)

特点:

a.回调函数执行次数!=数组长度

b.回调函数内部的return

  • return true: 循环结束,找到了满足条件的元素
  • return false: 循环继续,没找到,继续循环,要是一直没找到,就返回false

c.some方法的返回值

  • true: 有符合条件的元素
  • false: 没有符合条件的元素
let arr = [10, 20, 50, 60, -70, 80]
        //需求 判断数组中有没有负数
let res = arr.some(item => item < 0)
        console.log(res)

5.every方法

作用:判断数组中的所有元素是否都满足条件(逻辑与&&) 常用于开关思想

特点:

a.回调函数执行次数!=数组长度

b.回调函数内部的return

  • return true: 循环继续,如果满足条件所有元素全部遍历还是true,则结果就是true
  • return false: 循环结束,只要找到不满足条件的元素,循环立即结束,最终结果为false

c.every方法的返回值

  • true: 数组中所有元素都满足条件
  • false: 数组中有不满足条件的元素
let arr = [10, 20, -50, 60, 70, 80]
        //需求 检测数组的所有元素是不是都是正数
let res = arr.every(item => item > 0)
        console.log(res)

6.findIdex方法

作用:查找元素的下标

数组的findIdex和indexOf异同点:

相同点: 功能一致,都是查找元素的下标.有则返回下标,无则返回-1

不同点: 应用场景不同

indexOf : 查找数组中元素的值类型

findIdex : 查找数组/对象中元素的引用类型(根据条件查询数组中满足条件的元素的索引值)

特点:

a.回调函数执行次数!=数组长度

b.回调函数内部的return

  • return true : 循环结束,找到了符合要求的元素,返回该元素的下标
  • return false : 循环继续,没有找到符合条件的元素,遍历所有元素还是没有的话,返回false

c.some方法的返回值

  • 查索引 返回下标或者 -1
let arr = [
           {name:'张三',age:20},
           {name:'李四',age:18},
           {name:'王五',age:16},
       ]
let res = arr.findIndex(item=>item.name == '王五')
      console.log(res)
  • 查元素 find查询满足条件的第一个元素
let arr = [
           {name:'张三',age:20},
           {name:'李四',age:18},
           {name:'王五',age:16},
       ]
let res = arr.find(item=>item.name == '王五')
      console.log(res)

7.reduce方法

作用: 数组累加方法,常用于数组求和,数组最大值

语法: let 变量名=arr.reduce(参数1,参数2)

a.第一个参数: 回调(上一次值,当前值,当前下标)=>{}

  • 默认下标从0开始 -->第二个参数就是设置默认下标的
  • return 值 就是下一次 sum的值

b.第二个参数 :

  • 开发中一般设默认值为0,如果不设置遇到空数组会报错

c.reduce方法返回的值是 最后一次的sum的结果