Skip to main content
Module

x/rambda/source/partition.js

Faster and smaller alternative to Ramda
Go to Latest
File
import {_isArray} from './_internals/_isArray'
export function partitionObject(predicate, iterable) { const yes = {} const no = {} Object.entries(iterable).forEach(([prop, value]) => { if (predicate(value, prop)) { yes[prop] = value } else { no[prop] = value } })
return [yes, no]}
export function partitionArray(predicate, list, indexed = false) { const yes = [] const no = [] let counter = -1
while (counter++ < list.length - 1) { if ( indexed ? predicate(list[counter], counter) : predicate(list[counter]) ) { yes.push(list[counter]) } else { no.push(list[counter]) } }
return [yes, no]}
export function partition(predicate, iterable) { if (arguments.length === 1) { return listHolder => partition(predicate, listHolder) } if (!_isArray(iterable)) return partitionObject(predicate, iterable)
return partitionArray(predicate, iterable)}