0.1.32 • Published 30 days ago

groop v0.1.32

Weekly downloads
-
License
MIT
Repository
github
Last release
30 days ago

groop

Normalize an array of objects by a property.

Both lists and single objects can be normalized.

Usage

import { createArrayGroup } from '@dankreiger/groop';

const listGroup = [
  { name: 'Dan', age: 5 },
  { name: 'Puppy', age: 5 },
  { name: 'Woofer', age: 22 },
  { name: 'Dan', age: 20 },
];

const byAge = createArrayGroup('age');

byAge(listGroup);
/**
 *  {
 *    entities: {
 *      '20': [
 *        {
 *          age: 20,
 *          name: 'Dan',
 *        },
 *      ],
 *      '22': [
 *        {
 *          age: 22,
 *          name: 'Woofer',
 *        },
 *      ],
 *      '5': [
 *        {
 *          age: 5,
 *          name: 'Dan',
 *        },
 *        {
 *          age: 5,
 *          name: 'Puppy',
 *        },
 *      ],
 *    },
 *    ids: [5, 22, 20],
 *  }
 */

const byName = createArrayGroup('name');

byName(listGroup);

/**
 * {
 *   entities: {
 *     Dan: [
 *       { name: 'Dan', age: 5 },
 *       { name: 'Dan', age: 20 }
 *     ],
 *     Puppy: [ { name: 'Puppy', age: 5 } ],
 *     Woofer: [ { name: 'Woofer', age: 22 } ]
 *   },
 *   ids: [ 'Dan', 'Puppy', 'Woofer' ]
 *  }
 */
import { createGroup } from '@dankreiger/groop';

const singleGroup = { name: 'Dan', age: 5 };

const byAge = createGroup('age');

byAge(singleGroup);

/**
 * {
 *   entities: {
 *     '5': { name: 'Dan', age: 5 }
 *   },
 *   ids: [5]
 * }
 */

const byName = createGroup('name');

byName(singleGroup);

/**
 * {
 *   entities: {
 *     Dan: { name: 'Dan', age: 5 }
 *   },
 *   ids: ['Dan']
 * }
 */
0.1.30

1 month ago

0.1.31

1 month ago

0.1.32

30 days ago

0.1.29

1 month ago

0.1.23

1 year ago

0.1.25

1 year ago

0.1.26

1 year ago

0.1.27

1 year ago

0.1.28

1 year ago

0.1.22

2 years ago

0.1.21

2 years ago

0.1.20

2 years ago

0.1.19

2 years ago

0.1.18

2 years ago

0.1.15

2 years ago

0.1.14

2 years ago

0.1.13

2 years ago

0.1.6

2 years ago

0.1.4

2 years ago

0.1.1

2 years ago