数组遍历在项目中经常会用到
(1)for
使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显。
let arr = [1,2,3,4]
for(let i=0;i<arr.length;i++){
}
(2) for...in
let arr = [1,2,3,4]
for(let i in arr){
}
(3) for...of
let arr = [1,2,3,4]
for(let i of arr){
}
for...of 和 for...in 的用法上差不多,但是我们在数组上添加了额外的属性 例如
let arr = [1,2,3]
arr.name = 'test'
for(let i in arr){
console.log(i) // '0' ,'1', '2', 'name'
}
可以看到for...in循环把name包括在内,但是arr的length却不包括在内
然而 for...of循环修复了这个问题,他只循环集合的本身
(4)forEach
Array.forEach(function(value,index,array){
//value为遍历的当前元素,index为当前索引,array为正在操作的数组 //do something
},thisArg)
(5) map
var nums=[10,20,30];
nums.map(function(value,index,arr){
document.write('value值为:'+value); //10 20 30
document.write('index值为:'+index); //0 1 2
document.write('arr值为:'+arr); //[10,20,30]
})
forEach() 方法对数组的每个元素执行一次提供的函数。总是返回undefined;
map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。返回值是一个新的数组
(6) filter
let arr = [1,2,3]
arr.filter((item,index)=>{
})
以上的方法都可以用来遍历数组