JS中包含大量遍历方法,下面我主要从各个方法的用法、区别等方面对其进行介绍
1. for、forEach
功能描述:对数组、对象等进行遍历
let arr = [1,2,3,4,5]
//for
for(let i=0;i<arr.length;i++) console.log(arr[i]) //[1,2,3,4,5]
//forEach
arr.forEach((cur,idx)=>console.log(cur)) //[1,2,3,4,5]
for中可以使用break跳出循环,forEach中break不起作用
2. every、some、filter
功能描述:对数组中数据进行过滤
let arr = [1,2,3,4,5]
//every:对数组中所有内容进行条件判断,全部符合返回true,否则返回false
arr.every((item,idx)=>item>0) //true
arr.every((item,idx)=>item>3) //false
//some:对数组中所有内容进行条件判断,存在符合返回true,全部不符合返回false
arr.some((item,idx)=>item>5) //false
arr.some((item,idx)=>item>3) //true
//filter:对数组中所有内容进行条件判断,以数组的形式返回符合条件的值
arr.filter((item,idx)=>item>5) //[]
arr.filter((item,idx)=>item>3) //[4,5]
3. map、reduce
功能描述:对数组中数据进行操作
let arr = [1, 2, 3, 4, 5];
//map:返回一个新的数组中的元素为原始数组调用函数处理后的值
let newArray = array.map(item => return item * item) //[1,4,9,16,25]
//reduce:方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
let b = arr.reduce((pre,cur)=>pre+cur) //b:15
map与reduce中还存在其他高阶用法,避免误人子弟,请读者自行查阅其他资料。(本人在面试中曾被问到过map中最后一个参数的作用)
Tips
以上方法均不会改变原始数组。