fd22b0bf58
V2 (Laravel re-make)
109 lines
2.1 KiB
Markdown
109 lines
2.1 KiB
Markdown
# `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) |