JavaScript数组遍历和对象遍历

JS数组遍历:
1. 普通for循环,经常用的数组遍历
var 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语句返回到外层函数。

4. map遍历,map即是 “映射”的意思,也就是原数组被“映射”成对应新数组。所以这个方法其实并不是为了遍历
arr.map((item,i)=>{
    console.log('map遍历:'+i+'--'+item);
});

forEach、map都是ECMA5新增数组的方法,所以ie9以下的浏览器还不支持

5. for-of遍历 是ES6新增功能
for( let item of arr){
    console.log(item);
}
  • for-of这个方法避开了for-in循环的所有缺陷
  • 与forEach()不同的是,它可以正确响应break、continue和return语句
  • for-of循环也支持字符串遍历
    一种数据结构只要部署了Iterator 接口,就可以使用 let of 循环
6.for-in是为遍历对象而设计的,不适用于遍历数组。

for-in遍历数组的缺点:数组的下标index值是数字,for-in遍历的index值"0","1","2"等是字符串


JS对象遍历:
1.使用for..in..遍历

循环遍历对象自身的和继承的可枚举属性(不含Symbol属性).可以使用obj.hasOwnProperty 判定是否是自身的属性。

var obj={id:1,name:'zzh'}
for(let key in obj){
console.log(obj[key])
}
2.使用Object.keys()遍历

返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性)

Object.keys(obj).forEach(function(key){
     console.log(key,obj[key]);
});
3.使用Object.getOwnPropertyNames(obj)遍历

返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性)

Object.getOwnPropertyNames(obj).forEach(function(key){
    console.log(key,obj[key]);
});
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章