前言
JavaScript 提供了許多陣列方法來處理資料,其中 find() 和 reduce() 是兩個常用但功能完全不同的方法。這篇文章將詳細介紹它們的用法與差異。
find() 方法
語法
array.find(callback[, thisArg])
功能
尋找符合指定條件的第一個元素,如果找到則返回該元素,否則返回 undefined。
callback 參數
接受 3 個參數:
element:當前遍歷到的陣列元素index(可選):當前遍歷到的陣列元素的索引array(可選):被遍歷的陣列
返回值:如果符合指定條件,則返回 true,否則返回 false。
範例
const arr = [1, 2, 3, 4, 5];
const result = arr.find((num) => num > 3);
console.log(result); // 4
(num) => num > 3 是回調函數,用來判斷陣列中的每個元素是否大於 3。當第一個符合條件的元素被找到時,該元素就會成為 find() 方法的返回值。
num:當前遍歷到的陣列元素num > 3:表示判斷當前的元素是否大於 3
reduce() 方法
語法
array.reduce(callback[, initialValue])
功能
對陣列中的所有元素進行累加計算,返回計算結果。
callback 參數
接受 4 個參數:
accumulator:上一次調用回調函數時返回的累積值或初始值currentValue:當前遍歷到的陣列元素index(可選):當前遍歷到的陣列元素的索引array(可選):被計算的陣列
返回值:返回計算結果。
範例
const arr = [1, 2, 3, 4, 5];
const result = arr.reduce((sum, num) => sum + num, 0);
console.log(result); // 15
(sum, num) => sum + num 是回調函數,用來將陣列中的每個元素與之前的累加值相加,得到新的累加值。
sum:上一次回調函數返回的累加值,初始值為 0num:當前遍歷到的陣列元素sum + num:表示將上一次的累加值 sum 和當前的元素值 num 相加0:是reduce()方法的第二個參數,表示初始值。因為第一次調用回調函數時,上一次的累加值為初始值,而不是陣列的第一個元素
總結
兩個方法的主要差異:
find()方法尋找符合指定條件的第一個元素,而reduce()方法對陣列中的所有元素進行累加計算find()方法的回調函數返回布爾值,而reduce()方法的回調函數返回計算結果find()方法返回找到的元素,如果沒有找到則返回undefined,而reduce()方法返回計算結果