整理一下javascript那些数组的遍历方式( 循环数组 )

1. 原生js中的for循环

//最简单的一种循环遍历方式,也是使用频率最高的
let arr = [1,2,3,4,5]
for(let i = 0;i<arr.length;i++){
//打印每一个数组的元素
console.log(arr[i])
}

2.原生js中 for in (数组对象)效率低

for(let k in arr){
console.log(arr[k]) //输出的key是数组的索引值
}

3. for of (虽然性能好for in 不能循环对象)

for(let key of arr){
console.log(key)
}

4. ES6 中的 forEach( ) 数组元素有几个,该方法的回调就会执行几次

arr.forEach((item,index,arr)=>{
console.log(item + '---' + index + '---' + arr)
})

5. map ( 遍历每一个元素且返回对应的元素 map映射 返回的新数组和旧数组的长度是一样的 )

let maparr = [1,2,3,4,5,6,7,8,9]
let newarr = maparr.map((item,index)=>{
return item * item
})
console.log(newarr) // [1,4,9,16,25,36,49,64,81]

filter 过滤 遍历数组,过滤出符合条件的元素并返回一个新数组

 let datalist = [
{id:1,name:'买笔',done:true},
{id:1,name:'买笔记本',done:false},
{id:1,name:'练字',done:true}
]
let after = datalist.filter((item,index)=>{
return item.done //过滤true出来
});

some 遍历数组,只要有一个以上的元素满足条件 就返回true ,否则返回 false

let somebool = datalsit.some((item,index)=>{
return item.done
})
// 返回的是布尔值

every 遍历数组,每一个元素都满足条件 则返回 true 否则返回 false

let everybool = arr.every((item,index)=>{
return item.done
})
console.log(everybool)

find ES6 遍历数组,返回符合条件的第一个元素,如果没有符合条件的元素则返回 undefined

let arr1 = [1,2,3,4,5,6,7]
let num = arr1.find((item,index)=>{
return item === 3
})
console.log(num) // 3

findIndex(ES6)遍历数组,返回符合条件的一个元素的索引,如果没有符合条件的元素则返回-1

let arr2 = [1,2,3,5,7,8,2,4,5];
let num = arr2.findIndex((item,index)=>{
return item === 3
})
console.log(num) //2