JS數(shù)組遍歷:
1. 普通for循環(huán)适肠,經(jīng)常用的數(shù)組遍歷
let arr = [1,2,5,3,9];
for ( let i = 0; i <arr.length; i++){
console.log(arr[i]);
}
2. 優(yōu)化版for循環(huán):使用變量险毁,將長度緩存起來制圈,避免重復(fù)獲取長度,數(shù)組很大時(shí)優(yōu)化效果明顯
for(let i= 0,len = arr.length; i< len; i++){
console.log(arr[i]);
}
3. forEach畔况,ES5推出的,數(shù)組自帶的循環(huán)鲸鹦,主要功能是遍歷數(shù)組,實(shí)際性能比for弱
arr.forEach((item,i)=>{
console.log('forEach遍歷:'+i+'--'+item);
})
forEach這種方法也有一個(gè)小缺陷:你不能使用break語句中斷循環(huán)问窃,也不能使用return語句返回到外層函數(shù)亥鬓。
forEach是ECMA5新增數(shù)組的方法完沪,所以ie9以下的瀏覽器還不支持
4. for-of遍歷 是ES6新增功能
for( let item of arr){
console.log(item);
}
- for-of這個(gè)方法避開了for-in循環(huán)的所有缺陷
- 與forEach()不同的是域庇,它可以正確響應(yīng)break、continue和return語句
- for-of循環(huán)也支持字符串遍歷
一種數(shù)據(jù)結(jié)構(gòu)只要部署了Iterator 接口
,就可以使用 let of 循環(huán)
JS對象遍歷:
1.使用for..in..遍歷
循環(huán)遍歷對象自身的和繼承的可枚舉屬性(不含Symbol屬性)
.可以使用obj.hasOwnProperty 判定是否是自身的屬性覆积。
let obj={id:1,name:'zzh'}
for(let k in obj){
console.log(obj[k])
}
2.使用Object.keys()遍歷
返回一個(gè)數(shù)組,包括對象自身的(不含繼承的)所有可枚舉屬性(不含Symbol屬性)
Object.keys(obj).forEach(function(k){
console.log(key,obj[k]);
});
3.使用Object.getOwnPropertyNames(obj)遍歷
返回一個(gè)數(shù)組,包含對象自身的所有屬性(不含Symbol屬性,但是包括不可枚舉屬性)
Object.getOwnPropertyNames(obj).forEach(function(k){
console.log(k,obj[k]);
});