【Javascript】知识梳理:js中遍历对象和遍历数组的方法总结

227 阅读2分钟

遍历对象方法

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