平常的代碼編寫中總少不了實現循環的需求,當你須要對代碼塊執行屢次相同或相似的操做時就要用到循環,其中使用佔比最多的固然是for循環,今天來對這個強大的for ‘家族’ 作作小總結數組
最基礎最經常使用一樣也是功能最強大的固然是for循環自己了,來看看基本結構 for(聲明循環變量;循環的條件;修改循環變量){ 循環執行的代碼塊 } => for(let i;i<length;i++){ ... }
來個例子:code
var arr = []; for(let i=0;i<5;i++){ arr.push(i); } console.log(arr); //[0,1,2,3,4]
for的優勢:對象
可控性強,能作的操做多,你能夠在這個代碼塊中書寫複雜的循環條件,以至來修改或達到你所需的效果
缺點:索引
相對後面要說的循環方式代碼較爲繁瑣,不夠簡易,好比操做數組的時候,大多時候是針對下標或者內容,而不是實現複雜的業務邏輯
for in用於循環對象屬性,當須要遍歷一個對象或關聯數組,去獲取他們每一項的內容或者對其進行操做時,經常使用到for in, 普通的循環只能遍歷索引數組,即下標爲數字的數組,而關聯數組則是自定義下標名稱的數組, 循環中的代碼每執行一次,就會對數組的元素或者對象的屬性進行一次操做。 for(變量/下標 in 數組/對象){ 循環執行的操做 } => for(var key in arr){ ... }
來個例子:io
var score=[76,80,86,73,92]; var sum=0; for(var key in score){ sum+=score[key]; } console.log(sum); // 407
適合用來操做關聯數組而不是索引數組
forEach是數組的一個API,若是僅遍歷數組而不須要沒有返回值, 或僅對原數組中的元素執行修改操做,不須要返回新數組時, forEach是一個不錯的選擇,它能夠得到數組的下標和內容 arr.forEach(當前內容,下標,數組){ ... } => arr.forEach(elem,i,arr){ ... } // 根據須要選擇參數的個數
來個例子:console
var nums=[1,2,3,4,5]; nums.forEach(function(elem,i,arr){ arr[i]*=2; }) console.log(nums); //2,4,6,8,10
優勢:既能夠得到元素的下標,又能修改元素的內容 缺點:沒法控制遍歷時候的順序,是數組API,好比arguments之類的類數組對象使用不了
ES6新增的極簡化for循環,經常使用於遍歷索引數組 for(var 數組中的當前元素 of 數組){ ... } => for(var elem of arr){ ... }
來個例子:for循環
var names=["Tom","Alex","Pand"] for(var name of names){//遍歷索引數組 //of依次取出names數組中每一個人名保存到前邊的變量name中 console.log(name + " - 到!"); } // Tom - 到! // Alex - 到! // Pand - 到!
優勢:書寫簡化的for循環,能夠控制遍歷的順序 缺點:只能獲取元素內容,沒法獲取下標
以上就是個人一下小總結,主要經過此次整理讓本身回顧一下概念知識,歡迎指正錯誤function
不努力
就淘汰基礎