1.2.1 • Published 5 months ago

dynamic-object-yadab v1.2.1

Weekly downloads
-
License
ISC
Repository
github
Last release
5 months ago

Dynamic Object Utility

A lightweight utility for transforming and grouping arrays into objects based on a specific field. Perfect for scenarios where you need to reorganize collections for better data handling.


Installation

Install the package using npm:

npm install dynamic-object-yadab

Method

getDynamicObject(list: object[], key: string, skipKey?: boolean): object

Parameters:

  • list: An array of objects to transform.
  • key: The field used as the key for grouping. Supports dot notation for nested fields.
  • skipKey (optional): If set to true, the specified key will be removed from the grouped objects. Default is false.

Returns: An object where:

Keys are derived from the specified field.\ Values are arrays of objects (or individual objects, depending on your implementation).


Usage

Example 1: Grouping by a Simple Key

import { getDynamicObject } from 'dynamic-object-yadab';

const list = [
  { product: 1, name: 'iPhone 16 Pro Max 8/512', category: 'smartphone' },
  { product: 2, name: 'Whole Milk 5lb', category: 'grocery' },
  { product: 3, name: 'Samsung S21', category: 'smartphone' },
];

const result = getDynamicObject(list, 'category');
console.log(result);

Output:

{
  "smartphone": [
    { product: 1, name: 'iPhone 16 Pro Max 8/512', category: 'smartphone' },
    { product: 3, name: 'Samsung S21', category: 'smartphone' }
  ],
  "grocery": [
    { product: 2, name: 'Whole Milk 5lb', category: 'grocery' }
  ]
}

Example 2: Removing the Key from Values

If you pass the third parameter (skipKey) as true:

const result = getDynamicObject(list, 'category', true);
console.log(result);

Output:

{
  "smartphone": [
    { product: 1, name: 'iPhone 16 Pro Max 8/512' },
    { product: 3, name: 'Samsung S21' }
  ],
  "grocery": [
    { product: 2, name: 'Whole Milk 5lb' }
  ]
}

Example 3: Grouping by Nested Key

const list = [
  {
    product: 1,
    name: 'iPhone 16 Pro Max 8/512',
    category: { sku: 'smartphone', name: 'Smartphone' },
  },
  {
    product: 2,
    name: 'Whole Milk 5lb',
    category: { sku: 'grocery', name: 'Grocery' },
  },
  {
    product: 3,
    name: 'Samsung S21',
    category: { sku: 'smartphone', name: 'Smartphone' },
  },
];

const result = getDynamicObject(list, 'category.sku', true);
console.log(result);

Output:

{
  "smartphone": [
    { product: 1, name: 'iPhone 16 Pro Max 8/512', category: { name: 'Smartphone' } },
    { product: 3, name: 'Samsung S21', category: { name: 'smartphone' } }
  ],
  "grocery": [
    { product: 2, name: 'Whole Milk 5lb', category: { name: 'Grocery' } }
  ]
}

!NOTE If no item in the list is with the given key, you will see an error.

1.2.0

5 months ago

1.2.1

5 months ago

1.1.0

4 years ago

1.0.9

4 years ago

1.0.10

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago