partition
🗂 Partition an array or other iterable into two or more parts
partition()
is like [].filter()
except you get the true
and false
results as separate arrays.
partitionMap()
is like partition()
, but instead of true
/false
, results
are grouped by the return value of the passed function.
Install
Using Yarn:
$ yarn add @blakek/partition
…or using npm:
$ npm i --save @blakek/partition
Usage
import { partition, partitionMap } from '@blakek/partition';
const isEven = n => n % 2 === 0;
const [even, odd] = partition([1, 2, 3, 4, 5], isEven);
console.log(even);
console.log(odd);
const scores = [
{ initials: 'ABC', score: 125 },
{ initials: 'CBK', score: 920 },
{ initials: 'ABC', score: 123 },
{ initials: 'CBD', score: 420 },
{ initials: 'CBK', score: 1000 }
];
partitionMap(scores, x => x.initials);
API
partition
function partition<T>(
iterable: Iterable<T>,
partitionFunction: (value?: T, index?: number, array?: T[]) => boolean
): [T[], T[]];
Splits an array into two parts: those where the partition function was truthy,
and those where it was falsy.
partitionMap
function partitionMap<T, U>(
iterable: Iterable<T>,
partitionFunction: (value?: T, index?: number, array?: T[]) => U
): Map<U, T[]>;
Creates a Map
from the returns of the partition function.
partitionMap([1, 2, 3, 4, 5], n => n % 2 == 0);
const name = n => {
if (n < 3) return 'small';
if (n < 7) return 'medium';
return 'large';
};
partitionMap(new Set([1, 2, 3, 4, 5, 6, 7, 8]), n => name(n));
Contributing
Node.js and Yarn are required to work with this project.
To install all dependencies, run:
yarn
Useful Commands
yarn build | Builds the project to ./dist |
yarn format | Format the source following the Prettier styles |
yarn test | Run project tests |
yarn test --watch | Run project tests, watching for file changes |
License
MIT