数组遍历
1. forEach()
arr.forEach(callback(currentValue [, index [, array]])[, thisArg])
-
callback
为数组中每个元素执行的函数,该函数接收一至三个参数:
currentValue
数组中正在处理的当前元素。index
可选 数组中正在处理的当前元素的索引。array
可选 数组本身。 -
thisArg
可选可选参数。当执行回调函数
callback
时,用作this
的值。
例
let arr = [1,2,3,4,5]
arr.forEach(function(value,index){
arr[index] +=1;
})
console.log(arr); //输出 [2,3,4,5,6]
2. map()
创建一个新的数组,其中每一个元素又调用数组中的每一个元素执行提供的函数得来;
-
forEach和map的区别
forEach() 方法不会返回执行结果,而是undefined。
也就是说,forEach()会修改原来的数组。而map()方法会得到一个新的数组并返回。
3. some()
遍历数组,只要有一个以上的元素满足条件就返回 true,否则返回 false ,退出循环。
arr.some(callback(element[, index[, array]])[, thisArg])
4. every()
遍历数组,每一个元素都满足条件 则返回 true,否则返回 false。
5. for…in
主要用于遍历对象,for()中的格式:for(key in obj){}
key表示obj对象的每一个键值对的键
6. for…of
var arr = ['a', 'b', 'c', 'd'];
for (let a in arr) {
console.log(a); // 0 1 2 3
}
for (let a of arr) {
console.log(a); // a b c d
}
上面代码表明,**for…in循环读取键名,for…of循环读取键值。**如果要通过for…of循环,获取数组的索引,可以借助数组实例的entries方法和keys方法
for…in循环有几个缺点
①数组的键名是数字,但是for…in循环是以字符串作为键名“0”、“1”、“2”等等。
②for…in循环不仅遍历数字键名,还会遍历手动添加的其他键,甚至包括原型链上的键。
③某些情况下,for…in循环会以任意顺序遍历键名。
for…in循环主要是为遍历对象而设计的,不适用于遍历数组。for…of循环
有着同for…in一样的简洁语法,但是没有for…in那些缺点。
不同于forEach方法,它可以与break、continue和return配合使用。
提供了遍历所有数据结构的统一操作接口