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:

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:

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