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