首頁 >web前端 >js教程 >理解JS中的陣列迭代器方法:filter、map和reduce

理解JS中的陣列迭代器方法:filter、map和reduce

王林
王林原創
2024-07-22 21:08:12891瀏覽

Understanding Array Iterator Methods in JS: filter, map, and reduce

JavaScript 具有用於陣列轉換的內建迭代方法。讓我們來分析一下filter()、map()、reduce()以及它們的使用條件。

Array.filter()

它會建立一個新數組,其中包含透過所提供函數實現的測試的所有元素。 它為數組中的每個元素調用一次提供的回調函數,並傳回回調函數傳回 true 的所有值的新數組。

文法

filter(callbackFn)
filter(callbackFn, thisArg)

其計算結果為:Array.filter((element, index, array) => { ... } )

callbackFn 是一個為數組中的每個元素執行的函數,它應該傳回一個 true 值以保留結果數組的元素,否則傳回 false 值。此函數接受三個參數:當前元素、索引和陣列本身。

在下面的範例中,給定一個數字數組並期望找到偶數,filter() 方法的使用如下所示:

const numbers = [1, 2, 3, 4, 5, 6];
const evenNumbers = numbers.filter(number => number % 2 === 0);
console.log(evenNumbers); // Output: [2, 4, 6]

Array.map()

map() 方法建立一個新數組,其中填充了對目前數組中每個元素呼叫所提供函數的結果。它僅對已賦值的陣列索引呼叫回調函數,對空槽不呼叫回調函數。

文法

map(callbackFn)
map(callbackFn, thisArg)

這簡單翻譯為:Arrays.map((element, index, array) => { ... })

callbackFn 是一個對數組中的每個元素執行的函數,返回值將作為單一元素添加到新數組中。
此函數接受三個參數:目前元素、索引和陣列本身。

給定一個數字數組並期望返回它們的平方,map() 方法將是最有效的,如下所示:

const numbers = [1, 2, 3, 4, 5];
const squareNumbers = numbers.map(number => number ** 2);
console.log(squareNumbers); // Output: [1, 4, 9, 16, 25]

我們正在將一個陣列的值對應到另一個陣列。

Array.reduce()
reduce() 方法按升序索引順序對數組的每個元素運行回調函數縮減器,並傳入前一個元素計算的回傳值。在所有數組元素上運行減速器的最終結果是單一值。

如果提供了初始值,它將用作回呼的第一次呼叫中的第一個參數。如果沒有提供初始值,則使用陣列的第一個元素作為初始值,然後從第二個元素開始迭代。

文法

reduce(callbackFn)
reduce(callbackFn, initialValue)

callbackFn 是對陣列中的每個元素執行的函數。它的傳回值將成為下次呼叫回呼時累加器參數的值。對於最後一次調用,返回值成為reduce()函數的返回值。
它採用以下參數:累加器、currentValue、currentIndex 和呼叫它的陣列。

使用數字數組並負責查找它們的總和,reduce() 方法可以輕鬆地對其進行評估,如下所示:

const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(sum); // Output: 15

結論
這些方法filter()、map()和reduce()對於陣列迭代和運算是必不可少的。

  • filter() 最適合尋找給定數組中滿足回調函數條件的所有元素。

  • map() 是一種非破壞性數組方法,最適合用於操作給定數組中的資料並期望返回值。

  • reduce() 對於基於縮減函數將數組元素聚合為單一值非常有用。

參考文獻

  • Array.prototype.filter 上的 MDN Web 文件

  • Array.prototype.map 上的 MDN Web 文件

  • Array.prototype.reduce 上的 MDN Web 文件

以上是理解JS中的陣列迭代器方法:filter、map和reduce的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn