循環(huán)
for
遍歷數(shù)組最古老的方式就是 for 循環(huán):
let arr = ["Apple", "Orange", "Pear"];
for(let i = 0; i < arr.length; i++){
????alert(arr[i]);
}
for...of
但對于數(shù)組來說還有另一種循環(huán)方式, for...of :
let fruits = ["Apple", "Orange", "Plum"];
//遍歷數(shù)組元素
for(let fruit of fruits){
? ? alert(fruit);
}
注意: for...of 不能獲取當(dāng)前元素的索引,只是獲取元素值蜜唾,但大多數(shù)情況是夠用的。而且這樣寫更短。
for...in
技術(shù)上講刷后,因為數(shù)組也是對象趋急,所以使用 for...in 也是可以的:
let arr = ["Apple", "Orange", "Pear"];
for(let key in arr){
? ? alert(arr[key]);? ? //Apple, Orange, Pear
}
但這是一個很不好的操作。會有一些潛在問題:
1.for...in 循環(huán)會遍歷 所有屬性 饵撑,不僅僅是這些數(shù)字屬性剑梳。
在瀏覽器和其它環(huán)境中有一種成為”類數(shù)組“的對象,它們 看似是數(shù)組滑潘。也就是說垢乙,它們有 length 和?索引屬性,但是也可能有其它的非數(shù)字的屬性和方法语卤,這通常是我們不需要的追逮。 for...in 循環(huán)會把它們都列出來。所以如果我們需要處理類數(shù)組對象粹舵,這些”額外“的屬性就會存在問題钮孵。
2.for...in 循環(huán)適用于普通對象,并且做了對應(yīng)的優(yōu)化眼滤。但是不適用于數(shù)組巴席,因此速度要慢 10-100倍 。當(dāng)然即使是這樣也依然非匙缧瑁快漾唉。只有在遇到瓶頸時可能會有問題荧库。但是我們?nèi)匀粦?yīng)該了解這其中的不同。