0.1.32 • Published 30 days ago
groop v0.1.32
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