takeWhile
Removes elements in an array until the passed function returns true. Returns the removed elements.
Loop through the array, using a for...of loop over Array.prototype.entries() until the returned value from the function is true.
Return the removed elements, using Array.prototype.slice().
typescript
const takeWhile = (arr: any[], func: Predicate) =>
arr.reduce((acc, el) => (func(el) ? acc : acc.concat(el)), []);