[Easy] 手写 dropWhile

2024年3月8日

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

题目描述

请实作一个 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 上追蹤我們