[Easy] 手寫陣列 findIndex

2024年3月8日

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

題目描述

手寫 findIndex 的函式,它會接受三個參數:

  • array:要搜索的陣列
  • predicate:測試函式,用於判斷元素是否符合所需條件
  • fromIndex:搜索的起始索引,如果未指定,則默認為 0

findIndex 函式,會返回陣列中第一個滿足 predicate 函式的元素的索引。如果找不到符合條件的元素,則返回 -1

findIndex(array, predicate, [(fromIndex = 0)]);

findIndex([1, 13, 7, 54], (num: number) => num > 10)) // 1
findIndex([1, 13, 7, 54], (num: number) => num > 200)) // -1

本題解答

以下是本題的解答,詳細解題思路可以在 E+ 成長計畫看到

解法

function findIndex(array, predicate, fromIndex = 0) {
  const startIndex = fromIndex < 0 ? fromIndex + array.length : fromIndex;

  for (let i = startIndex; i < array.length; i++) {
    if (predicate(array[i])) {
      return i;
    }
  }

  return -1;
}
🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們