Предположим, у вас есть значение элемента, содержащегося в массиве, и вы хотите получить его индекс.
Как вы можете это получить?
Если элемент является примитивным значением, например строкой или числом, вы можете использовать метод 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/”