JSFiddle - React, Tailwind, and code Playground

by David Joseph Guzsik

TypeScript

const partitionByKey = <T, K extends string>(items: T[], getKey: (item: T) => K): Record<K, T[]> => {
	const output: Partial<Record<K, T[]>> = {};	
	items.forEach(item => {
  	const key = getKey(item);
    if (!output.hasOwnProperty(key)) {
    	output[key] = [];
    }
    output[key].push(item);
  });
  return output;
}


document.body.innerHTML = '<pre><code>'+JSON.stringify(partitionByKey([0,1,2,3,4,5,6,7,8,9,10], (item) => item % 2 === 0 ? 'even' : 'odd'),null,4)+'</code></pre>';