group-array
Group array of objects into lists.
Table of Contents
(TOC generated by verb using markdown-toc)
Install
Install with npm:
$ npm install --save group-array
Usage
var groupArray = require('group-array');
Examples
var arr = [
{tag: 'one', content: 'A'},
{tag: 'one', content: 'B'},
{tag: 'two', content: 'C'},
{tag: 'two', content: 'D'},
{tag: 'three', content: 'E'},
{tag: 'three', content: 'F'}
];
groupArray(arr, 'tag');
results in:
{
one: [
{tag: 'one', content: 'A'},
{tag: 'one', content: 'B'}
],
two: [
{tag: 'two', content: 'C'},
{tag: 'two', content: 'D'}
],
three: [
{tag: 'three', content: 'E'},
{tag: 'three', content: 'F'}
]
}
Group by multiple, deeply nested properties
var arr = [
{ data: { year: '2014', tag: 'one', month: 'jan', day: '01'}, content: '...'},
{ data: { year: '2014', tag: 'one', month: 'jan', day: '01'}, content: '...'},
{ data: { year: '2014', tag: 'one', month: 'jan', day: '02'}, content: '...'},
{ data: { year: '2014', tag: 'one', month: 'jan', day: '02'}, content: '...'},
{ data: { year: '2014', tag: 'one', month: 'feb', day: '10'}, content: '...'},
{ data: { year: '2014', tag: 'one', month: 'feb', day: '10'}, content: '...'},
{ data: { year: '2014', tag: 'one', month: 'feb', day: '12'}, content: '...'},
{ data: { year: '2014', tag: 'one', month: 'feb', day: '12'}, content: '...'},
{ data: { year: '2014', tag: 'two', month: 'jan', day: '14'}, content: '...'},
{ data: { year: '2014', tag: 'two', month: 'jan', day: '14'}, content: '...'},
{ data: { year: '2014', tag: 'two', month: 'jan', day: '16'}, content: '...'},
{ data: { year: '2014', tag: 'two', month: 'jan', day: '16'}, content: '...'},
{ data: { year: '2014', tag: 'two', month: 'feb', day: '18'}, content: '...'},
{ data: { year: '2015', tag: 'two', month: 'feb', day: '18'}, content: '...'},
{ data: { year: '2015', tag: 'two', month: 'feb', day: '10'}, content: '...'},
{ data: { year: '2015', tag: 'two', month: 'feb', day: '10'}, content: '...'},
{ data: { year: '2015', tag: 'three', month: 'jan', day: '01'}, content: '...'},
{ data: { year: '2015', tag: 'three', month: 'jan', day: '01'}, content: '...'},
{ data: { year: '2015', tag: 'three', month: 'jan', day: '02'}, content: '...'},
{ data: { year: '2015', tag: 'three', month: 'jan', day: '02'}, content: '...'},
{ data: { year: '2015', tag: 'three', month: 'feb', day: '01'}, content: '...'},
{ data: { year: '2015', tag: 'three', month: 'feb', day: '01'}, content: '...'},
{ data: { year: '2015', tag: 'three', month: 'feb', day: '02'}, content: '...'},
{ data: { year: '2015', tag: 'three', month: 'feb', day: '02'}, content: '...'}
]
Pass a list or array of properties:
groupArray(arr, 'data.year', 'data.tag', 'data.month', 'data.day');
Results in something like this: (abbreviated)
{
'2014':
{ one:
{ jan:
{ '01':
[ { data: { year: '2014', ... },
{ data: { year: '2014', ... } ],
'02':
[ { data: { year: '2014', ... },
{ data: { year: '2014', ... } ] },
feb:
{ '10':
[ { data: { year: '2014', ... },
{ data: { year: '2014', ... } ],
'12':
[ { data: { year: '2014', ... },
{ data: { year: '2014', ... } ] } },
two:
{ jan:
{ '14':
[ { data: { year: '2014', ... },
{ data: { year: '2014', ... } ],
'16':
[ { data: { year: '2014', ... },
{ data: { year: '2014', ... } ] },
feb:
{ '18':
[ { data: { year: '2014', ... } ] } } },
'2015':
{ two:
{ feb:
{ '10':
[ { data: { year: '2015', ... },
{ data: { year: '2015', ... } ],
'18':
[ { data: { year: '2015', ... } ] } },
three:
{ jan:
{ '01':
[ { data: { year: '2015', ... },
{ data: { year: '2015', ... } ],
'02':
[ { data: { year: '2015', ... },
{ data: { year: '2015', ... } ] },
feb:
{ '01':
[ { data: { year: '2015', ... },
{ data: { year: '2015', ... } ],
'02':
[ { data: { year: '2015', ... },
{ data: { year: '2015', ... } ] } } }};
About
Related projects
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Building docs
(This document was generated by verb-generate-readme (a verb generator), please don't edit the readme directly. Any changes to the readme must be made in .verb.md.)
To generate the readme and API documentation with verb:
$ npm install -g verb verb-generate-readme && verb
Running tests
Install dev dependencies:
$ npm install -d && npm test
Author
Brian Woodward
License
Copyright © 2016, Brian Woodward.
Released under the MIT license.
This file was generated by verb, v0.9.0, on July 15, 2016.