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]);
});
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章