js陣列遍歷和物件遍歷
阿新 • • 發佈:2019-02-15
針對js各種遍歷作一個總結分析,從型別用處:分陣列遍歷和物件遍歷;還有效能,優缺點等。
JS陣列遍歷:
1,普通for迴圈,經常用的陣列遍歷
var arr = [1,2,0,3,9];
for ( var i = 0; i <arr.length; i++){
console.log(arr[i]);
}
2,優化版for迴圈:使用變數,將長度快取起來,避免重複獲取長度,陣列很大時優化效果明顯
for(var j = 0,len = arr.length; j < len; j++){
console.log(arr[j]);
}
3,forEach,ES5推出的,陣列自帶的迴圈,主要功能是遍歷陣列,實際效能比for還弱
arr.forEach(function(value,i){
console.log('forEach遍歷:'+i+'--'+value);
})
forEach這種方法也有一個小缺陷:你不能使用break語句中斷迴圈,也不能使用return語句返回到外層函式。
4,map遍歷,map即是 “對映”的意思 用法與 forEach 相似
arr.map(function(value,index){
console.log('map遍歷:'+index+'--'+value);
});
map遍歷支援使用return語句,支援return返回值
var temp=arr.map(function(val,index){ console.log(val); return val*val }) console.log(temp);
forEach、map都是ECMA5新增陣列的方法,所以ie9以下的瀏覽器還不支援
5,for-of遍歷 是ES6新增功能
for( let i of arr){
console.log(i);
}
- for-of這個方法避開了for-in迴圈的所有缺陷
- 與forEach()不同的是,它可以正確響應break、continue和return語句
for-of迴圈不僅支援陣列,還支援大多數類陣列物件,例如DOM NodeList物件。
for-of迴圈也支援字串遍歷
JS物件遍歷:
1,for-in遍歷
for-in是為遍歷物件而設計的,不適用於遍歷陣列。
遍歷陣列的缺點:陣列的下標index值是數字,for-in遍歷的index值"0","1","2"等是字串
for (var index in arr){
console.log(arr[index]);
console.log(index);
}