# How to get the index of an item in a JavaScript array

> Learn how to find the index of an item in a JavaScript array, using indexOf for primitive values and findIndex with a callback for objects.

Author: Flavio Copes | Published: 2020-08-19 | Canonical: https://flaviocopes.com/how-to-get-index-item-array-javascript/

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:

```js
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:

```js
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`:

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

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

//index is `1`
```
