JS数组遍历:
1. 普通for循环,经常用的数组遍历
let arr = [1,2,5,3,9];
for ( let i = 0; i <arr.length; i++){
console.log(arr[i]);
}
2. 优化版for循环:使用变量,将长度缓存起来,避免重复获取长度,数组很大时优化效果明显
for(let i= 0,len = arr.length; i< len; i++){
console.log(arr[i]);
}
3. forEach,ES5推出的,数组自带的循环,主要功能是遍历数组,实际性能比for弱
arr.forEach((item,i)=>{
console.log('forEach遍历:'+i+'--'+item);
})
forEach这种方法也有一个小缺陷:你不能使用break语句中断循环,也不能使用return语句返回到外层函数。
forEach是ECMA5新增数组的方法,所以ie9以下的浏览器还不支持
4. for-of遍历 是ES6新增功能
for( let item of arr){
console.log(item);
}
- for-of这个方法避开了for-in循环的所有缺陷
- 与forEach()不同的是,它可以正确响应break、continue和return语句
- for-of循环也支持字符串遍历
一种数据结构只要部署了Iterator 接口
,就可以使用 let of 循环
JS对象遍历:
1.使用for..in..遍历
循环遍历对象自身的和继承的可枚举属性(不含Symbol属性)
.可以使用obj.hasOwnProperty 判定是否是自身的属性。
let obj={id:1,name:'zzh'}
for(let k in obj){
console.log(obj[k])
}
2.使用Object.keys()遍历
返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性)
Object.keys(obj).forEach(function(k){
console.log(key,obj[k]);
});
3.使用Object.getOwnPropertyNames(obj)遍历
返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性)
Object.getOwnPropertyNames(obj).forEach(function(k){
console.log(k,obj[k]);
});
网友评论