0.0.9 • Published 4 years ago

flat-group v0.0.9

Weekly downloads
2
License
ISC
Repository
github
Last release
4 years ago

Flat Group

The purpose of this small module is to make an array of json grouped and thus easier to query as a group like structure. Something which is useful for libraries like D3.js.

How to import:

const flatGroup = require("flat-group");

// or 

import flatGroup from "flat-group";

example 1

For demonstrative purposes this illustrates nothing particularly exciting with just one key

const arr = [
    { id: 1, group_1: true, group_2: "red" },
    { id: 2, group_1: true, group_2: "yellow" },
    { id: 3, group_1: false, group_2: "yellow" },
    { id: 4, group_1: true, group_2: "green" },
    { id: 5, group_1: false, group_2: "green" },
    { id: 6, group_1: true, group_2: "red" },
]

const groups = flatGroup(arr, ["group_1"]);

returns:

{
    "group_1": {
        "keys": [
            true,
            false
        ],
        "true": [
            {
                "id": 1,
                "group_1": true,
                "group_2": "red"
            },
            {
                "id": 2,
                "group_1": true,
                "group_2": "yellow"
            },
            {
                "id": 4,
                "group_1": true,
                "group_2": "green"
            },
            {
                "id": 6,
                "group_1": true,
                "group_2": "red"
            }
        ],
        "false": [
            {
                "id": 3,
                "group_1": false,
                "group_2": "yellow"
            },
            {
                "id": 5,
                "group_1": false,
                "group_2": "green"
            }
        ]
    }
}

example 2

The second argument keys can support n number of keys meaning you can cluster your data into n number of groups:

using the same array from above:

const groups = flatGroup(arr, ["group_1", "group_2"]);

// returns

{
    "group_1": {
        "keys": [
            true,
            false
        ],
        "true": [
            {
                "id": 1,
                "group_1": true,
                "group_2": "red"
            },
            {
                "id": 2,
                "group_1": true,
                "group_2": "yellow"
            },
            {
                "id": 4,
                "group_1": true,
                "group_2": "green"
            },
            {
                "id": 6,
                "group_1": true,
                "group_2": "red"
            }
        ],
        "false": [
            {
                "id": 3,
                "group_1": false,
                "group_2": "yellow"
            },
            {
                "id": 5,
                "group_1": false,
                "group_2": "green"
            }
        ]
    },
    "group_2": {
        "keys": [
            "red",
            "yellow",
            "green"
        ],
        "red": [
            {
                "id": 1,
                "group_1": true,
                "group_2": "red"
            },
            {
                "id": 6,
                "group_1": true,
                "group_2": "red"
            }
        ],
        "yellow": [
            {
                "id": 2,
                "group_1": true,
                "group_2": "yellow"
            },
            {
                "id": 3,
                "group_1": false,
                "group_2": "yellow"
            }
        ],
        "green": [
            {
                "id": 4,
                "group_1": true,
                "group_2": "green"
            },
            {
                "id": 5,
                "group_1": false,
                "group_2": "green"
            }
        ]
    }
}
0.0.9

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.5

4 years ago

0.0.6

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago