Suppose you have the value of an item which is contained in an array, and you want to get its index.

How can you get it?

If the item is a primitive value, like a string or number, you can use the indexOf method of an array:

const letters = ['a', 'b', 'c']

const index = letters.indexOf('b')

//index is 1


Remember that the index starts from the number 0

If the item is an object, you can’t use this way, because if you try doing:

const letters = [
{
letter: 'a',
},
{
letter: 'b',
},
{
letter: 'c',
},
]

const index = letters.indexOf({
letter: 'b',
})


index will be -1 which means the item was not found. Because objects are compared by reference, not by their values (differently for primitive types). The object passed to indexOf is a completely different object than the second item in the array.

You can use the findIndex value like this, which runs a function for each item in the array, which is passed the element, and its index. Returning from it will assign the return value to the return value of findIndex:

const letters = [
{
letter: 'a',
},
{
letter: 'b',
},
{
letter: 'c',
},
]

const index = letters.findIndex((element, index) => {
if (element.letter === 'b') {
return true
}
})

//index is 1