Работа с массивами объектов — обычная задача при разработке TypeScript. Одной из частых операций является поиск индекса определенного объекта в массиве. В этой статье блога мы рассмотрим несколько методов достижения этой цели, приведя попутно примеры кода.
Методы поиска индекса:
- Метод Array.findIndex():
МетодfindIndex()
выполняет поиск в массиве и возвращает индекс первого элемента, удовлетворяющего заданному условию. Вот пример:
const array = [{ id: 1, name: 'John' }, { id: 2, name: 'Jane' }, { id: 3, name: 'Bob' }];
const index = array.findIndex(obj => obj.id === 2);
console.log(index); // Output: 1
- Метод Array.indexOf():
МетодindexOf()
возвращает первый индекс, по которому можно найти определенный элемент в массиве. Однако для этого требуется значение сравнения, а не условие. Вот пример:
const array = ['apple', 'banana', 'orange'];
const index = array.indexOf('banana');
console.log(index); // Output: 1
- Метод Array.find():
Методfind()
возвращает первый элемент, удовлетворяющий заданному условию, но вместо возврата индекса он возвращает сам объект. Однако вы можете объединить его с методомindexOf()
для получения индекса. Вот пример:
const array = [{ id: 1, name: 'John' }, { id: 2, name: 'Jane' }, { id: 3, name: 'Bob' }];
const obj = array.find(obj => obj.id === 2);
const index = array.indexOf(obj);
console.log(index); // Output: 1
- Метод Array.reduce():
Методreduce()
можно использовать для перебора массива и поиска индекса определенного объекта на основе условия. Вот пример:
const array = [{ id: 1, name: 'John' }, { id: 2, name: 'Jane' }, { id: 3, name: 'Bob' }];
const index = array.reduce((acc, obj, currentIndex) => {
if (obj.id === 2) {
return currentIndex;
}
return acc;
}, -1);
console.log(index); // Output: 1