【原文来自】:https://www.cnblogs.com/chenyablog/
1、使用Object.keys()遍历
返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性).
var obj = {'0':'a','1':'b','2':'c'};
Object.keys(obj).forEach(function(key){
console.log(key,obj[key]);
});
输出:
a b c
2、使用for..in..遍历
循环遍历对象自身的和继承的可枚举属性(不含Symbol属性).
var obj = {'0':'a','1':'b','2':'c'};
for(var i in obj) {
console.log(i,":",obj[i]);
}
输出:
a b c
3、使用Object.getOwnPropertyNames(obj)遍历
循环遍历对象自身的和继承的可枚举属性(不含Symbol属性).
var obj = {'0':'a','1':'b','2':'c'};
Object.getOwnPropertyNames(obj).forEach(function(key){
console.log(key,obj[key]);
});
输出:
a b c
4、使用Reflect.ownKeys(obj)遍历
返回一个数组,包含对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举.
var obj = {'0':'a','1':'b','2':'c'};
Reflect.ownKeys(obj).forEach(function(key){
console.log(key,obj[key]);
});
输出:
a b c
1、使用forEach遍历
var arr=[1,2,3,4];
arr.forEach(function(val, index) {
console.log(val, index);
});
输出:
1 0;2 1;.....
2、使用for..in..遍历
var arr=["张三","李四","王五","赵六"];
for (var i in arr){
console.log(i,":",arr[i]);
}
输出:
0:张三;1:李四;
3、使用for-of遍历
不仅支持数组,还支持大多数类数组对象,例如DOM NodeList对象.也支持字符串遍历,它将字符串视为一系列的Unicode字符来进行遍历.
var arr=["张三","李四","王五","赵六"];
for (var value of arr){
console.log(value);
}
输出:
张三;李四;
4、使用for-length遍历
这种方式比较常用的方式
var arr=["张三","李四","王五","赵六"];
for (var i=0;i<arr.length;i++){
console.log(arr[i]);
}
输出:
张三;李四;
附录:
之前看过各种不同遍历方式的性能;待补充
原文:https://www.cnblogs.com/meiguhuaxian/p/12447269.html