[Easy] 手寫 dropWhile
2024年3月8日
💎 加入 E+ 成長計畫 與超過 400+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源
題目描述
請實作一個 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);
}