deep-group
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

deep-group

Blazingly fast multi layer grouping of your data.

npm install deep-group

Usage

Group your data by multiple properties

Example:

const students = [
  { name: "John", age: 20, group: "C" },
  { name: "Jane", age: 21, group: "C" },
  { name: "Jack", age: 21, group: "D" },
  { name: "Jacky", age: 21, group: "D" },
];

const grouped = group(students, "age", "group");

The returned object will look like this:

{
  "20": {
    C: [{ name: "John", age: 20, group: "C" }],
  },
  "21": {
    C: [{ name: "Jane", age: 21, group: "C" }],
    D: [
      { name: "Jack", age: 21, group: "D" },
      { name: "Jacky", age: 21, group: "D" },
    ],
  },
};

Group your data by nested properties and by custom functions

Example:

const students = [
  {
    name: "John",
    age: 20,
    address: { street: "some street 1", zipCode: "zipCode A" },
  },
  {
    name: "Jane",
    age: 21,
    address: { street: "some street 1337", zipCode: "zipCode B" },
  },
  {
    name: "Jack",
    age: 21,
    address: { street: "some street 42", zipCode: "zipCode A" },
  },
  {
    name: "Jacky",
    age: 22,
    address: { street: "some street 3", zipCode: "zipCode B" },
  },
];

const grouped = group(students, "address.zipCode", (student) =>
  student.age >= 21 ? "senior" : "junior"
);

The returned object will look like this:

{
  "zipCode A": {
    junior: [
      {
        name: "John",
        age: 20,
        address: {
          street: "some street 1",
          zipCode: "zipCode A",
        },
      },
    ],
    senior: [
      {
        name: "Jack",
        age: 21,
        address: {
          street: "some street 42",
          zipCode: "zipCode A",
        },
      },
    ],
  },
  "zipCode B": {
    senior: [
      {
        name: "Jane",
        age: 21,
        address: {
          street: "some street 1337",
          zipCode: "zipCode B",
        },
      },
      {
        name: "Jacky",
        age: 22,
        address: {
          street: "some street 3",
          zipCode: "zipCode B",
        },
      },
    ],
  },
};

License

MIT

Package Sidebar

Install

npm i deep-group

Weekly Downloads

1

Version

1.0.0

License

MIT

Unpacked Size

24 kB

Total Files

9

Last publish

Collaborators

  • animus-blue