数组(array)遍历
- 普通for循环遍历:使用率最高的一种
let arr = [1,3,4,5,6,7,8,6,4,7,845,3];
for(let i = 0; i < arr.length; i++){
console.log(i);
}
- foreach遍历:数组Array自带的foreach循环,使用频率较高,实际上性能比普通for循环弱
let arr = [1,3,4,5,6,7,8,6,4,7,845,3];
arr.forEach( function(item) {
console.log(item);
})
- forin遍历:使用方便,但是效率最低
let arr = [1,3,4,5,6,7,8,6,4,7,845,3];
for(item in arr){
console.log(item);
}
- map遍历:效率也比较低
let arr = [1,3,4,5,6,7,8,6,4,7,845,3];
arr.map(function(item){
console.log(item);
})
对象(object)遍历
- for in遍历
let obj = {"a": 1, "b": 2, "3":"c", "d": "d", "daf":"raf"}
for(let i in obj) {
console.log("key:" + i + " value:" + obj[i]);
}
- Object.keys()遍历: 返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性).
let obj = {"a": 1, "b": 2, "3":"c", "d": "d", "daf":"raf"};
Object.keys(obj).forEach(function(item){
console.log("key:" +item + " value:" + obj[item]);
})
let keyList = Object.keys(obj);
console.log(keyList);
let valueList = Object.values(obj);
console.log(valueList);
- Object.getOwnPropertyNames(obj)遍历: 返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性)
let obj = {"a": 1, "b": 2, "3":"c", "d": "d", "daf":"raf"};
Object.getOwnPropertyNames(obj).forEach(function(item){
console.log("key:" +item + " value:" + obj[item]);
});
- Reflect.ownKeys(obj)遍历: 返回一个数组,包含对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举.
let obj = {"a": 1, "b": 2, "3":"c", "d": "d", "daf":"raf"};
Reflect.ownKeys(obj).forEach(function(item){
console.log("key:" +item + " value:" + obj[item]);
});
参考: