rambdax
Version:
Extended version of Rambda - a lightweight, faster alternative to Ramda
33 lines (27 loc) • 906 B
JavaScript
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('')
}