數(shù)組遍歷
for
--使用變量將數(shù)組長度緩存起來,在數(shù)組較長時(shí)性能優(yōu)化效果明顯
for (let index = 0; index < array.length; index++) {
const element = array[index];
}
forEach
--ES5語法豌拙,對數(shù)組的每個(gè)元素執(zhí)行一次提供的函數(shù)陕悬,不能使用break、return
array.forEach(element => {
});
map
--ES5語法按傅,創(chuàng)建一個(gè)新數(shù)組捉超,其結(jié)果是該數(shù)組中的每個(gè)元素都調(diào)用一個(gè)提供的函數(shù)后返回的結(jié)果
array.map(tiem=>{
})
for...of
--ES6語法,可以遍歷Array逞敷、Set狂秦、Map、String推捐、TypedArray、arguments
等可迭代對象侧啼,可以使用break牛柒、continue
for (const iterator of object) {
}
對象遍歷
for...in
--以任意順序遍歷一個(gè)對象自有的堪簿、繼承的、可枚舉的皮壁、非Symbol
的屬性椭更,對于每個(gè)不同的屬性,語句都會(huì)被執(zhí)行
for (const key in object) {
if (Object.hasOwnProperty.call(object, key)) {
const element = object[key];
}
}
Object.keys()
--返回一個(gè)由一個(gè)給定對象的自身可枚舉屬性組成的數(shù)組蛾魄,數(shù)組中屬性名的排列順序和使用for...in
循環(huán)遍歷該對象時(shí)返回的順序一致
Object.values()
--返回一個(gè)給定對象自身的所有可枚舉屬性值的數(shù)組虑瀑,值的順序與使用for...in
循環(huán)的順序相同(區(qū)別在于 for-in 循環(huán)枚舉原型鏈中的屬性)
Object.getOwnPropertyNames()
--返回一個(gè)由指定對象的所有自身屬性的屬性名(包括不可枚舉屬性但不包括Symbol
值作為名稱的屬性)組成的數(shù)組
字符串遍歷
for...of
--ES6語法,可以遍歷Array滴须、Set舌狗、Map、String扔水、TypedArray痛侍、arguments
等可迭代對象,可以使用break魔市、continue
for(let char of str){
console.log(char)
}