[Easy] 手寫 dropWhile

2024年3月8日

💎 加入 E+ 成長計畫 如果你喜歡我們的內容,歡迎加入 E+,獲得更多深入的軟體前後端內容

題目描述

請實作一個 dropWhile 函式。此函式接受兩個參數,第一個是參數是一個陣列,它可以是任何類型的陣列;第二個是一個 predicate 函式,會接受陣列中的元素,如果返回為真,則表示該元素應該被丟棄,直到返回的不為真。

dropWhile 會返回一個新的陣列,且不應改動到原始陣列。其中包含原始陣列的切片,不包括從頭開始被丟棄的元素。

// 範例一
dropWhile([1, 2, 3, 4, 5, 6], (value) => value < 4);
// => [4, 5, 6]

// 範例二
dropWhile([0, 1, 2], (value) => value < 5);
// => []

本題解答

以下是本題的解答,詳細解題思路可以在 E+ 成長計畫 看到。如果想練習更多題目,推薦可以到 GreatFrontEnd 上練習。

解法一

function dropWhile(array, predicate) {
  let index = 0;

  while (index < array.length && predicate(array[index], index, array)) {
    index++;
  }

  return array.slice(index);
}

解法二

function dropWhile(array, predicate) {
  let droppedCount = 0;

  for (let i = 0; i < array.length; i++) {
    if (!predicate(array[i], i, array)) {
      break;
    }
    droppedCount++;
  }

  return array.slice(droppedCount);
}
🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們