UNPKG

rambdax

Version:

Extended version of Rambda - a lightweight, faster alternative to Ramda

33 lines (27 loc) 906 B
import { _isArray } from './_internals/_isArray' export function dropLastWhile(predicate, iterable){ if (arguments.length === 1){ return _iterable => dropLastWhile(predicate, _iterable) } if (iterable.length === 0) return iterable const isArray = _isArray(iterable) if (typeof predicate !== 'function'){ throw new Error(`'predicate' is from wrong type ${ typeof predicate }`) } if (!isArray && typeof iterable !== 'string'){ throw new Error(`'iterable' is from wrong type ${ typeof iterable }`) } let found = false const toReturn = [] let counter = iterable.length while (counter > 0){ counter-- if (!found && predicate(iterable[ counter ]) === false){ found = true toReturn.push(iterable[ counter ]) } else if (found){ toReturn.push(iterable[ counter ]) } } return isArray ? toReturn.reverse() : toReturn.reverse().join('') }