Snippet

indexByKey()

const indexByKey = key => arr =>
  arr.reduce((acc, cur) => {
    acc[cur[key]] = cur
    return acc
  }, {})

Use this function to make look ups based on a key for an array of items O(1). So long as your list doesn't change, you should only have to run this once.

Here's an example:

const indexById = indexByKey('id')

const members = [
  { id: 1, name: 'Kyle' },
  { id: 2, name: 'Krios' }, // my cat
  { id: 3, name: 'Tali' }, //  my other cat
]

const membersById = indexById(members)
/*
  {
    '1': { id: 1, name: 'Kyle' },
    '2': { id: 2, name: 'Krios' },
    '3': { id: 3, name: 'Tali' }
  }
*/

Make sure the key you're using is unique to each object, otherwise you'll have an incorrect index due to key collisions.

Let's talk some more about JavaScript, React, and software engineering.

I write a newsletter to share my thoughts and the projects I'm working on. I would love for you to join the conversation. You can unsubscribe at any time.

Just Enough Functional Programming Logo
Just Enough Functional Programming

Check out my courses!

Liked the post? You might like my video courses, too. Click the button to view this course or go to Courses for more information.
View on egghead.io