Giter VIP home page Giter VIP logo

groupby's Introduction

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

groupby's People

Contributors

thbp avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

dane-stevens

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.