|
|
- import _curry2 from "./internal/_curry2.js";
- import _dispatchable from "./internal/_dispatchable.js";
- import _xtakeWhile from "./internal/_xtakeWhile.js";
- import slice from "./slice.js";
- /**
- * Returns a new list containing the first `n` elements of a given list,
- * passing each value to the supplied predicate function, and terminating when
- * the predicate function returns `false`. Excludes the element that caused the
- * predicate function to fail. The predicate function is passed one argument:
- * *(value)*.
- *
- * Dispatches to the `takeWhile` method of the second argument, if present.
- *
- * Acts as a transducer if a transformer is given in list position.
- *
- * @func
- * @memberOf R
- * @since v0.1.0
- * @category List
- * @sig (a -> Boolean) -> [a] -> [a]
- * @sig (a -> Boolean) -> String -> String
- * @param {Function} fn The function called per iteration.
- * @param {Array} xs The collection to iterate over.
- * @return {Array} A new array.
- * @see R.dropWhile, R.transduce, R.addIndex
- * @example
- *
- * const isNotFour = x => x !== 4;
- *
- * R.takeWhile(isNotFour, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3]
- *
- * R.takeWhile(x => x !== 'd' , 'Ramda'); //=> 'Ram'
- */
-
- var takeWhile =
- /*#__PURE__*/
- _curry2(
- /*#__PURE__*/
- _dispatchable(['takeWhile'], _xtakeWhile, function takeWhile(fn, xs) {
- var idx = 0;
- var len = xs.length;
-
- while (idx < len && fn(xs[idx])) {
- idx += 1;
- }
-
- return slice(0, idx, xs);
- }));
-
- export default takeWhile;
|