js數組遍歷、對象遍歷、字符串遍歷

數組遍歷

  • for --使用變量將數組長度緩存起來,在數組較長時性能優化效果明顯
for(var i=0,len=arr.length;i<len;i++){
	console.log("元素:"+arr[i]);
}
  • forEach --ES5語法,對數組的每一個元素執行一次提供的函數,不能使用break、return
arr.forEach(function(item,index,arr){
	console.log("元素:"+item+" 索引:"+index+" 整個數組:"+arr);
})
  • map --ES5語法,建立一個新數組,其結果是該數組中的每一個元素都調用一個提供的函數後返回的結果
arr.map(function(val,index){
	console.log("元素:"+val+" 索引:"+index);
	return val*val;
})
  • for...of --ES6語法,能夠遍歷Array、Set、Map、String、TypedArray、arguments等可迭代對象,可使用break、continue
for(let item of arr){
	console.log("元素:"+item);
}

對象遍歷

  • for...in --以任意順序遍歷一個對象自有的、繼承的、可枚舉的、非Symbol的屬性,對於每一個不一樣的屬性,語句都會被執行
for(var key in obj){
	console.log("屬性:"+key+" 值:"+obj[key]);
}
  • Object.keys() --返回一個由一個給定對象的自身可枚舉屬性組成的數組,數組中屬性名的排列順序和使用for...in循環遍歷該對象時返回的順序一致
Object.keys(obj);
  • Object.values() --返回一個給定對象自身的全部可枚舉屬性值的數組,值的順序與使用for...in循環的順序相同(區別在於 for-in 循環枚舉原型鏈中的屬性)
Object.values(obj);
  • Object.getOwnPropertyNames() --返回一個由指定對象的全部自身屬性的屬性名(包括不可枚舉屬性但不包括Symbol值做爲名稱的屬性)組成的數組
Object.getOwnPropertyNames(obj);

字符串遍歷

  • for...of --ES6語法,能夠遍歷Array、Set、Map、String、TypedArray、arguments等可迭代對象,可使用break、continue
for(let char of string){
	console.log("字符:"+char);
}
相關文章
相關標籤/搜索