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>';