Рубрики
Без рубрики

Как получить индекс элемента в массиве JavaScript

Вот как получить индекс элемента в массиве JS на основе его значения

Предположим, у вас есть значение элемента, содержащегося в массиве, и вы хотите получить его индекс.

Как вы можете это получить?

Если элемент является примитивным значением, например строкой или числом, вы можете использовать метод indexOf массива:

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

const index = letters.indexOf('b')

//index is `1`

Помните, что индекс начинается с числа 0

Если элемент является объектом, вы не можете использовать этот способ, потому что если вы попытаетесь сделать:

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

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

индекс будет -1 это означает, что предмет не был найден. Потому что объекты сравниваются по ссылке, а не по их значениям (по-разному для примитивных типов). Объект, переданный в indexOf , является совершенно другим объектом, чем второй элемент в массиве.

Вы можете использовать значение find Index , подобное этому, которое запускает функцию для каждого элемента в массиве, которому передается элемент, и его индекс. При возврате из него возвращаемое значение будет присвоено возвращаемому значению findIndex :

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

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

//index is `1`

Оригинал: “https://flaviocopes.com/how-to-get-index-item-array-javascript/”