js 遍歷陣列方式

喜歡文學的程式設計師發表於2020-09-27

1. for迴圈

for迴圈是最基礎也是效率最高的陣列遍歷方式

 

2. for of() 迴圈

推薦用for of遍歷陣列,for in遍歷物件

 

3. forEach(function(currentValue, index, arr), thisValue)

forEach()方法用於呼叫陣列的每一個元素,並將元素傳遞給回撥函式

function(currentValue, index, arr):必須。為一個函式,陣列中的每個元素都會執行這個函式。其中函式引數:

        currentValue:必填,當前元素。

        index:可選,當前元素的索引。

        arr:可選,當前元素所屬的陣列物件。

thisValue:可選,傳遞給函式的值一般用this值,如果這個引數為空,"undefined"會傳遞給"this"值。(這個引數一般很少用)

1、 forEach() 對於空陣列是不會執行回撥函式的。

2、 for可以用continue跳過迴圈中的一個迭代,forEach用continue會報錯。

3、 forEach() 需要用 return 跳過迴圈中的一個迭代,跳過之後會執行下一個迭代。

4、沒有辦法終止或跳出forEach迴圈,不過可以通過try…catch…丟擲錯誤來實現跳出迴圈

 

4. map(function(currentValue,index,arr), thisValue) 

map的引數和forEach類似, map()方法返回一個新的陣列, 不會改變原始陣列的值, 不會對空陣列進行檢測

function(currentValue, index, arr):必須。為一個函式,陣列中的每個元素都會執行這個函式。其中函式引數:

        currentValue:必須。當前元素的的值。

        index:可選。當前元素的索引。

        arr:可選。當前元素屬於的陣列物件。

thisValue:可選。物件作為該執行回撥時使用,傳遞給函式,用作"this"的值。

 

5.filter(function(currentValue,index,arr), thisValue)

filter用於對陣列進行過濾。同樣, filter() 不會對空陣列進行檢測, 不會改變原始陣列。

 

6. every(function(currentValue,index,arr), thisValue)

檢測陣列所有元素是否都符合指定條件

如果陣列中檢測到有一個元素不滿足,則整個表示式返回 false ,且剩餘的元素不會再進行檢測。
如果所有元素都滿足條件,則返回 true。

不會對空陣列進行檢測

不會改變原始陣列

 

7. some(function(currentValue,index,arr), thisValue)

some() 與 every() 相反, 陣列中有一個滿足條件則返回true, 其他注意事項與every() 相同     //有點 &&  與  ||  的感覺

 

8. reduce(function(total, currentValue, currentIndex, arr), initialValue)

接收一個函式作為累加器,陣列中的每個值(從左到右)開始縮減,最終計算為一個值。

function(total,currentValue, index,arr)    必需。用於執行每個陣列元素的函式。

        total    必需。初始值, 或者計算結束後的返回值。

        currentValue    必需。當前元素

        currentIndex    可選。當前元素的索引

        arr    可選。當前元素所屬的陣列物件。

initialValue    可選。傳遞給函式的初始值

    //有點 += 的味道

    //由於未傳入初始值, total第一次為1, 而後total為上次結果. 

 

9. reduceRight(function(total, currentValue, currentIndex, arr), initialValue)

reduceRight() 方法的功能和 reduce() 功能是一樣的,不同的是 reduceRight() 從陣列的末尾向前將陣列中的陣列項做累加。

 

10. find(function(currentValue, index, arr),thisValue)

返回通過測試陣列的第一個元素值。

        當陣列中的元素在測試條件時返回 true 時, find() 返回符合條件的元素,之後的值不會再呼叫執行函式。

        如果沒有符合條件的元素返回 undefined

               find() 不會對空陣列進行檢測。

               find() 不改變陣列的原始值。

不過, find() 的相容性不好, IE12及以上才支援

 

 

相關文章