遍历对象方法
for...in
遍历输出的是对象自身的属性以及原型链上可枚举的属性(不含Symbol属性),原型链上的属性最后输出说明先遍历的是自身的可枚举属性,后遍历原型链上的 。
var obj = {'0':'a','1':'b','2':'c'};
for(var i in obj) {
console.log(i,obj[i]);
}
//0 a
//1 b
//2 c
Object.keys()
遍历对象返回的是一个包含对象自身可枚举属性的数组(不含Symbol属性) 。
var obj = {'0':'a','1':'b','2':'c'};
Object.keys(obj).forEach(function(key){
console.log(key,obj[key]);
});
//0 a
//1 b
//2 c
Objcet.getOwnPropertyNames()
输出对象自身的可枚举和不可枚举属性的数组,不输出原型链上的属性 (不含Symbol属性,但是包括不可枚举属性)。
var obj = {'0':'a','1':'b','2':'c'};
Object.getOwnPropertyNames(obj).forEach(function(key){
console.log(key,obj[key]);
});
//0 a
//1 b
//2 c
Reflect.ownKeys()
返回对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举 。
var obj = {'0':'a','1':'b','2':'c'};
Reflect.ownKeys(obj).forEach(function(key){
console.log(key,obj[key]);
});
//0 a
//1 b
//2 c
遍历数组方法
forEach
var arr=[1,2,3,4];
arr.forEach(function(val, index) {
console.log(val, index);
});
//a 0
//b 1
//c 2
//d 3
map
可以对遍历的每一项做相应的处理,返回每次函数调用的结果组成的数组 。
var arr = ['a', 'b', 'c', 'd'];
arr.map(function(item, index, array) {
console.log(item, index);
})
//a 0
//b 1
//c 2
//d 3
for循环遍历
var arr = ['a', 'b', 'c', 'd'];
for (var i = 0; i < arr.length; i++) {
console.log(i, arr[i])
}
//a 0
//b 1
//c 2
//d 3
for...in
var arr = ['a', 'b', 'c', 'd'];
for (var i in arr){
console.log(i,arr[i]);
}
//a 0
//b 1
//c 2
//d 3
for...of(es6)
只遍历出value,不能遍历出下标,可遍历出Symbol数据类型的属性,此方法作为遍历所有数据结构的统一的方法 。
var arr = ['a', 'b', 'c', 'd'];
for (var value of arr){
console.log(value);
}
//a
//b
//c
//d