Skip to main content
Module

x/rambda/source/dropLastWhile.js

Faster and smaller alternative to Ramda
Go to Latest
File
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('')}