遍历方式

178 阅读2分钟
一、for, for in, for of 遍历

1.for
语法:for (let i = 0; i < arr.length; i++) { console.log(arr[i]); }
遍历数组的常见写法,写法稍微笨重一些,数组长度特别大时,可以把arr.length缓存起来,
轻微减少性能消耗,中途允许break和return
对于empty的处理:=>undefined; 对于null和undefined不做处理;

2.for of
for(let item of arr) { console.log(item); }
item为数组的值,遍历数组不常见,一般用来遍历字符串、ES6的set、map结构,可以通过break终止循环,但是不能通过return终止
遍历数组时对于empty undefined,null的处理同for循环

3.for in
语法:for(let index in arr) { console.log(index); }
遍历数组时,会跳过empty,不会跳过null和undefined;
但for in用来遍历数组也不常见,通常用来遍历对象,但遍历到对象的构造函数的原型属性,可以和obj.hasOwnProperty(property)结合使用

二、forEach, map 遍历

1.forEach遍历
语法:arr.forEach((item,index,arr) => {})
遍历数组的常见方式,也可以遍历map。不能break,没有返回值,但return可以跳过当前环节
遍历会跳过empty
2.map遍历
语法:letnewArr = arr.map((item,index,arr) => {return newArr})
遍历会跳过empty
遍历数组的常见方式,同样不能break,有返回值

四、数组的查找判断遍历API

1.filter
语法:const result = arr.filter((item) => {item==3})
返回符合条件的数组元素,不能break,有空元素会跳过
2.some/every
语法:const result = arr.some/every((item) => {item==3})
some是只要数组中有一个满足条件就返回true
every是只要数组中所有的元素满足条件才返回true
3.find/findIndex
语法:const result = arr.find/findIndex((item,index) => {item==3})
find找到满足的条件则立即返回,找不到返回undefined,find返回值,findIndex返回索引(找不到-1)
4.indexof/lastIndexOf
语法:arr.indexOf("要查找的值")
从左到右/从右到左找到首项满足条件的一项(===比较),返回index值,但这个值如果是对象的话就没法通过indexOf查找了,此时需要用到find,find可以获取比较具体的键值。
5.inCludes
语法:arr.inCludes("要查找的值",查找位置)
和indexOf相似,比indexOf多了个NaN的判断
6.reduce函数
语法:arr.reduce((sum,cur,index)=>{},初始值)
sum可以设置初始值,并在后续的循环中拿到上次运算的值