Skip to content
forked from tHBp/groupBy

Ultra tiny library to group array of objects based on multiple properties

License

Notifications You must be signed in to change notification settings

dane-stevens/groupBy

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

groupBy Build Status

A tiny library to group array of objects based on multiple properties.
Ultra small, just 0.3KB [minified+gzipped] and 1.38KB [uncompressed source].

Getting Started

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>

Usage

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

API

groupBy(array [, order [, transform ]])

Groups and returns an array.

array

Type: Array
Default: none

Array to be grouped.

order

Type: String | Array
Default: none

The priority order which grouping is to be performed. A single string value or array of strings.

transform

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.

License

MIT © The Half Blood Prince

About

Ultra tiny library to group array of objects based on multiple properties

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 78.8%
  • HTML 21.2%