this repo has no description
at main 900 B view raw
1/** 2 * Split an array into two groups based on the result {@linkcode predicate} 3 * 4 * Items for which {@linkcode predicate} returns `true` will be in the "left" 5 * result, and the others in the "right" one 6 */ 7export function partition<T>( 8 input: Array<T>, 9 predicate: (element: T) => boolean, 10): [Array<T>, Array<T>] { 11 const left: Array<T> = []; 12 const right: Array<T> = []; 13 14 for (const element of input) { 15 if (predicate(element)) { 16 left.push(element); 17 } else { 18 right.push(element); 19 } 20 } 21 22 return [left, right]; 23} 24 25/** 26 * Deduplicate the elements of {@linkcode items} by their `id` property 27 */ 28export function uniqueById<T extends { id: string }>(items: T[]): T[] { 29 const entries = items.map((item) => [item.id, item] as const); 30 const mapById = new Map<string, T>(entries); 31 32 return Array.from(mapById.values()); 33}