Implement dropWhile(array, predicate). It returns a new array with the leading elements removed for as long as predicate returns truthy. The moment the predicate returns a falsy value, dropping stops: that element and everything after it are kept, even if some of those later elements would have satisfied the predicate. This mirrors Lodash's _.dropWhile.
// array: T[] — the array to read from.
// predicate: (value: T, index: number, arr: T[]) — called with each element,
// its index, and the array.
// returns: T[]
// A NEW array starting at the first element for which the predicate is falsy.
function dropWhile(array, predicate): T[];
// Drop the leading run of values below 3.
dropWhile([1, 2, 3, 4], (n) => n < 3);
// → [3, 4]
// The first element already fails the predicate, so nothing is dropped.
dropWhile([1, 2, 3], (n) => n > 5);
// → [1, 2, 3]
dropWhile([1, 2, 3, 1], (n) => n < 3) returns [3, 1], not [3].predicate(value, index, array), just like the callback for Array.prototype.filter.[].dropWhile([], fn) returns [].