首先这些方法都有一个共同点 语法的结构是一样的,callbackfn(回调函数),里面两个形参:一个value,一个index。
map方法:
打印:
特点:1.遍历的次数等于数组的长度。
2.本身是有返回值的:return之后会得到映射之后的新数组。
3. 如果不加return就会得到undefined。
filter 方法:
1. 回调执行次数 === 数组长度
2. 本身返回值 :根据条件筛选之后,返回的新数组
3. 回调函数内部return
return true : 满足筛选条件,当前元素放入新数组中
return false : 不满足筛选条件,当前元素不放入新数组
举例:
打印:
forEach 方法:
1. 遍历次数 === 数组长度
2.无返回值
3. return 无
说白了就是遍历数组的 和for循环类似
举例:
打印:
some 方法:
1. 回调执行次数 != 数组长度 (为什么不等于,当返回true的时候,循环就结束了)
2 . 本身返回值
true : 有满足条件的元素
false: 没有满足条件的元素
3. 回调函数内部return
true : 循环立即结束。并且some方法本身返回true
false : 循环继续执行。如果全部遍历结束还是false,则some方法默认返回false
举例:
打印:
every方法:
1. 遍历次数 != 数组长度
2. 本身返回值:
true : 全部满足条件
false: 有元素不满足条件
3. 回调函数内部return:和some方法刚好相反
true:循环继续。如果全部遍历结束还是true,则every方法默认返回就是true
false:循环结束。并且every方法本身返回值是false
举例:
打印:
findindex 方法:
1. 遍历次数 != 数组长度
2. 本身返回值
有元素: 元素下标
没有元素: 固定值-1
3. 回调函数内部return
return true: 找到了,循环立即结束。并且findIndex方法本身返回当前index
return false: 没找到,循环继续。如果全部遍历完还是没找到,则得到默认返回值-1
举例:
打印:
reduce方法:
1.数组reduce方法 : 给每一个元素执行一次回调
2.应用场景: 数组求和、求数组最大值
3.语法:
let sum = arr.reduce((sum,value,index)=>{ sum+value },0)
sum返回值是最后一次sum的结果
4.注意点: 一定要给初始值,否则reduce遇到空数组就会报错
举例:
打印: