淺談for的家族成員

平常的代碼編寫中總少不了實現循環的需求,當你須要對代碼塊執行屢次相同或相似的操做時就要用到循環,其中使用佔比最多的固然是for循環,今天來對這個強大的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(變量/下標 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

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之類的類數組對象使用不了

for of

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

不努力
就淘汰基礎

相關文章
相關標籤/搜索