Skip to content

Extend _.groupBy to support multi-key objects #216

Open
@rianwouters

Description

@rianwouters

The current groupBy function only adds each Collection object to the returned hash only once.
In some case one might want to add the same object in multiple groups.

A concrete example is an object having an array property.

Basically this means replacing:

.groupBy = group(function(result, value, key) {
if (
.has(result, key)) result[key].push(value); else result[key] = [value];
});

by

function addToGroup(result, value, key) {
if _.isArray(key) { .each(key, function(k) { addToGroup(result, value, k); }); return; }
if (
.has(result, key)) result[key].push(value); else result[key] = [value];
});

_.groupBy = group(addToGroup);

I implemented this for my backbone collection as groupByMulti but that is rather cumbersome as I don't have access to the underscore internals, in particular the group function.

Metadata

Metadata

Assignees

No one assigned

    Labels

    after modulesThis should be postponed until after modularization (temporary label, see #220)enhancement

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions