A tiny library to group array of objects based on multiple properties.
Ultra small, just 0.3KB
[minified+gzipped] and 1.38KB
[uncompressed source].
If you are using npm
$ npm install --save group-object-array
or include index.js
manually as
<script src="index.js" charset="utf-8"></script>
const groupBy = require('group-object-array');
var result = groupBy([{"a":1,"b":{"c":"C"}},{"a":2,"b":{"c":"D"}},{"a":1,"b":{"c":"C"}},{"a":1,"b":{"c":"A"}}], 'a');
or groupBy(test, ['a', 'b.c']);
//groupBy(test, ['a', 'b.c']) returns
[{"key":"1","children":[{"key":"C","children":[{"a":1,"b":{"c":"C"}},{"a":1,"b":{"c":"C"}}]},{"key":"A","children":[{"a":1,"b":{"c":"A"}}]}]},{"key":"2","children":[{"key":"D","children":[{"a":2,"b":{"c":"D"}}]}]}]
For browser environments, the library exports a global arrayGroup
, which can be used in a similar fashion,
arrayGroup(test, ['a', 'b.c']);
// returns the grouped 'test' array
Groups and returns an array.
Type: Array
Default: none
Array to be grouped.
Type: String | Array
Default: none
The priority order which grouping is to be performed. A single string value or array of strings.
Type: Function
Default: none
The transformation function to be applied to keys on which grouping is specified.
It is a function which accepts the object from input array and returns an array of specifying transformation for each key level.
For example,
groupBy(test, ['a', 'b.c' ...], function(item){ return [item.toString() + '~key~1', f(item.property)...] })
where f
is any transformation function.
Note that transformation is applied at the output result for transforming input to a consumable output. If used, transformation must be specified for each key level.
MIT © The Half Blood Prince