[Easy] LeetCode JS 30 - 2634. Filter Elements from Array (手寫原生陣列 filter 方法)

2024年3月8日

💎 加入 E+ 成長計畫 與超過 400+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

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;
};
🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們