[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);
}