12345678910111213141516171819202122232425262728293031323334353637 |
- import _curry2 from "./internal/_curry2.js";
- /**
- * Takes a list and a predicate and returns a pair of lists with the following properties:
- *
- * - the result of concatenating the two output lists is equivalent to the input list;
- * - none of the elements of the first output list satisfies the predicate; and
- * - if the second output list is non-empty, its first element satisfies the predicate.
- *
- * @func
- * @memberOf R
- * @since v0.19.0
- * @category List
- * @sig (a -> Boolean) -> [a] -> [[a], [a]]
- * @param {Function} pred The predicate that determines where the array is split.
- * @param {Array} list The array to be split.
- * @return {Array}
- * @example
- *
- * R.splitWhen(R.equals(2), [1, 2, 3, 1, 2, 3]); //=> [[1], [2, 3, 1, 2, 3]]
- */
- var splitWhen =
- /*#__PURE__*/
- _curry2(function splitWhen(pred, list) {
- var idx = 0;
- var len = list.length;
- var prefix = [];
- while (idx < len && !pred(list[idx])) {
- prefix.push(list[idx]);
- idx += 1;
- }
- return [prefix, Array.prototype.slice.call(list, idx)];
- });
- export default splitWhen;
|