# `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)