JavaScript数组遍历和对象遍历

JS数组遍历:
1. 普通for循环,经常用的数组遍历
let arr = [1,2,5,3,9];
for ( let i = 0; 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]);
});

你可能感兴趣的:(JavaScript数组遍历和对象遍历)