[Easy] LeetCode JS 30 - 2634. Filter Elements from Array (手寫原生陣列 filter 方法)
2024年3月8日
💎 加入 E+ 成長計畫 如果你喜歡我們的內容,歡迎加入 E+,獲得更多深入的軟體前後端內容
LeetCode 30 Days of JavaScript
本題來自 LeetCode 的 30 天 JacaScript 挑戰
2634. Filter Elements from Array (手寫原生陣列 filter 方法)題目描述
給定一個整數陣列 arr
和一個過濾函式 fn
,回傳一個過濾後的陣列 filteredArr
。
函式 fn
接受一個或兩個參數:
arr[i]
是來自arr
的數字i
是arr[i]
的索引
filteredArr
應該只包含來自 arr
的元素,其中表達式 fn(arr[i], i)
評估為真值。真值是指 Boolean(value)
返回 true
的值。此題不得使用 JavaScript 內建的 Array.filter
方法來解。
// 範例一
輸入: arr = [0,10,20,30], fn = function greaterThan10(n) { return n > 10; }
輸出: [20,30]
解說:
const newArray = filter(arr, fn); // [20, 30]
該函式把沒有大於 10 的數字過濾掉
// 範例二
輸入: arr = [1,2,3], fn = function firstIndex(n, i) { return i === 0; }
輸出: [1]
解說:
fn 也可以接受每個元素的索引,在這個案例中,該函式把索引不等於 1 的數字過濾掉
本題解答
以下是本題的解答,詳細解題思路可以在 E+ 成長計畫 看到。如果想練習更多題目,推薦可以到 GreatFrontEnd 上練習。
解法
var filter = function (arr, fn) {
const returnedArr = [];
for (let i = 0; i < arr.length; i++) {
if (fn(arr[i], i)) {
returnedArr.push(arr[i]);
}
}
return returnedArr;
};