You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.1 KiB
56 lines
1.1 KiB
# `keyBy()`
|
|
|
|
The keyBy method keys the collection by the given key. If multiple items have the same key, only the last one will appear in the new collection:
|
|
|
|
```js
|
|
const collection = collect([
|
|
{
|
|
product: 'Chair',
|
|
manufacturer: 'IKEA',
|
|
},
|
|
{
|
|
product: 'Desk',
|
|
manufacturer: 'IKEA',
|
|
},
|
|
{
|
|
product: 'Chair',
|
|
manufacturer: 'Herman Miller',
|
|
},
|
|
]);
|
|
|
|
const keyed = collection.keyBy('manufacturer');
|
|
|
|
keyed.all();
|
|
|
|
// {
|
|
// IKEA: {
|
|
// product: 'Desk',
|
|
// manufacturer: 'IKEA',
|
|
// },
|
|
// 'Herman Miller': {
|
|
// product: 'Chair',
|
|
// manufacturer: 'Herman Miller',
|
|
// },
|
|
// }
|
|
```
|
|
|
|
You may also pass a callback to the method. The callback should return the value to key the collection by:
|
|
|
|
```js
|
|
const upperCased = collection.keyBy(item => item.manufacturer.toUpperCase());
|
|
|
|
upperCased.all();
|
|
|
|
// {
|
|
// IKEA: {
|
|
// product: 'Desk',
|
|
// manufacturer: 'IKEA',
|
|
// },
|
|
// 'HERMAN MILLER': {
|
|
// product: 'Chair',
|
|
// manufacturer: 'Herman Miller',
|
|
// },
|
|
// }
|
|
```
|
|
|
|
[View source on GitHub](https://github.com/ecrmnn/collect.js/blob/master/src/methods/keyBy.js) |