|
|
- # `groupBy()`
-
- The groupBy method groups the collection's items into multiple collections by a given key:
-
- > If you want to group the collection by keys as a plain object, see [mapToGroups](mapToGroups)
-
- ```js
- const collection = collect([
- {
- product: 'Chair',
- manufacturer: 'IKEA',
- },
- {
- product: 'Desk',
- manufacturer: 'IKEA',
- },
- {
- product: 'Chair',
- manufacturer: 'Herman Miller',
- },
- ]);
-
- const grouped = collection.groupBy('manufacturer');
-
- grouped.all();
-
- // {
- // IKEA: Collection {
- // items: [
- // {
- // id: 100,
- // product: 'Chair',
- // manufacturer: 'IKEA',
- // price: '1490 NOK',
- // },
- // {
- // id: 150,
- // product: 'Desk',
- // manufacturer: 'IKEA',
- // price: '900 NOK',
- // },
- // ],
- // },
- // 'Herman Miller': Collection {
- // items: [
- // {
- // id: 200,
- // product: 'Chair',
- // manufacturer: 'Herman Miller',
- // price: '9990 NOK',
- // },
- // ],
- // },
- // }
- ```
-
- In addition to passing a string key, you may also pass a callback. The callback should return the value you wish to key the group by:
-
- ```js
- const collection = collect([
- {
- product: 'Chair',
- manufacturer: 'IKEA',
- },
- {
- product: 'Desk',
- manufacturer: 'IKEA',
- },
- {
- product: 'Chair',
- manufacturer: 'Herman Miller',
- },
- ]);
-
- const grouped = collection.groupBy((item, key) => item.manufacturer.substring(0, 3));
-
- grouped.all();
-
- // {
- // IKE: Collection {
- // items: [
- // {
- // id: 100,
- // product: 'Chair',
- // manufacturer: 'IKEA',
- // price: '1490 NOK',
- // },
- // {
- // id: 150,
- // product: 'Desk',
- // manufacturer: 'IKEA',
- // price: '900 NOK',
- // },
- // ],
- // },
- // Her: Collection {
- // items: [
- // {
- // id: 200,
- // product: 'Chair',
- // manufacturer: 'Herman Miller',
- // price: '9990 NOK',
- // },
- // ],
- // },
- // }
- ```
-
- [View source on GitHub](https://github.com/ecrmnn/collect.js/blob/master/src/methods/groupBy.js)
|