Skip to main content
Module

x/ramda/takeLastWhile.js

:ram: Practical functional Javascript
Very Popular
Go to Latest
File
import _curry2 from './internal/_curry2';import slice from './slice';

/** * Returns a new list containing the last `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)*. * * @func * @memberOf R * @since v0.16.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.dropLastWhile, R.addIndex * @example * * const isNotOne = x => x !== 1; * * R.takeLastWhile(isNotOne, [1, 2, 3, 4]); //=> [2, 3, 4] * * R.takeLastWhile(x => x !== 'R' , 'Ramda'); //=> 'amda' */var takeLastWhile = _curry2(function takeLastWhile(fn, xs) { var idx = xs.length - 1; while (idx >= 0 && fn(xs[idx])) { idx -= 1; } return slice(idx + 1, Infinity, xs);});export default takeLastWhile;