@thi.ng/transducers
Version:
Collection of ~170 lightweight, composable transducers, reducers, generators, iterators for functional data transformations
26 lines (25 loc) • 590 B
JavaScript
import { __groupByOpts } from "./internal/group-opts.js";
import { $$reduce } from "./reduce.js";
function groupByObj(...args) {
const res = $$reduce(groupByObj, args);
if (res) return res;
const opts = __groupByOpts(args[0]);
const [_init, complete, _reduce] = opts.group;
return [
() => ({}),
(acc) => {
for (const k in acc) {
acc[k] = complete(acc[k]);
}
return acc;
},
(acc, x) => {
const k = opts.key(x);
acc[k] = acc[k] ? _reduce(acc[k], x) : _reduce(_init(), x);
return acc;
}
];
}
export {
groupByObj
};