es-toolkit
Version:
A state-of-the-art, high-performance JavaScript utility library with a small bundle size and strong type annotations.
16 lines (13 loc) • 543 B
JavaScript
import { groupBy as groupBy$1 } from '../../array/groupBy.mjs';
import { identity } from '../../function/identity.mjs';
import { isArrayLike } from '../predicate/isArrayLike.mjs';
import { iteratee } from '../util/iteratee.mjs';
function groupBy(source, _getKeyFromItem) {
if (source == null) {
return {};
}
const items = isArrayLike(source) ? Array.from(source) : Object.values(source);
const getKeyFromItem = iteratee(_getKeyFromItem ?? identity);
return groupBy$1(items, getKeyFromItem);
}
export { groupBy };