JS數(shù)組循環(huán)

循環(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)該了解這其中的不同。


通常來說,我們不應(yīng)該用 for...in 來處理數(shù)組

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容