在平时的工作中,对数组,对象的遍历操作是非常常见的。现就遍历的几种方式做以下总结。
数组的遍历
假设有一个数组var arr = ['a',,'d'];
我们需要遍历打印数组元素。
- 最常见的for循环
for (var i = 0; i< arr.length; i++) {
console.log(arr[i]); //a,undefined,d
}
- for in
for (var i in arr) {
console.log(arr[i]); //a,d
}
- for of
for (var i of arr) {
console.log(i); //a,undefined,d
}
- 数组实例的forEach方法
arr.forEach(function(value){
console.log(value); //a,d
})
- 数组实例的map方法
arr.map(function(value){
console.log(value); //a,d
})
- 数组实例的filter方法
arr.filter(function(value){
console.log(value); //a,d
})
- es6的keys方法
for (let index of arr.keys()) {
console.log(index);//0,1,2
}
- es6的values方法
for (let elem of arr.values()) {
console.log(elem);//a,undefined,d
}
- es6的entries方法
for (let [index, elem] of arr.entries()) {
console.log(index,elem);//0 a 1 undefined 2 d
}
说明:
- 最常见也是使用最广的就是普通的for循环,它适用所有的遍历场景,不会跳过空位。
- for in 与for of是遍历对象时使用的,一般不推荐用来遍历数组。 for in 用来遍历对象的键名,for of 用来遍历对象的键值。
- forEach方法一般不返回值,只用来操作数据,会跳过空位。
- map方法返回一个新数组,会跳过空位。
- filter方法返回一个新数组,用来根据条件过滤数组的,会跳过空位。
- es6的三种方法都返回一个遍历器对象,可以用for...of循环进行遍历, keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。它们都不会跳过空位。
网友评论