Сохраняйте уникальный id, а не индекс элемента. Функция-предикат по id позволит найти тот же объект после перестановки; имя не подходит, если оно может повторяться или изменяться.
Как построить поиск элемента массива по устойчивому ключу
Сохраняйте уникальный id, а не индекс элемента. Функция-предикат по id позволит найти тот же объект после перестановки; имя не подходит, если оно может повторяться или изменяться.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
В JavaScript есть массив объектов с уникальными числовыми id и строковыми name. Пользователь выбрал элемент, после чего массив пересортировали. Создайте функцию поиска выбранного элемента в обновлённом массиве; при отсутствии возвращайте undefined.
Ответ
Сохраняйте уникальный id, а не индекс элемента. Функция-предикат по id позволит найти тот же объект после перестановки; имя не подходит, если оно может повторяться или изменяться.
const initial = [
{ id: 10, name: 'Анна' },
{ id: 20, name: 'Борис' }
];
const selectedId = initial[0].id;
const matchesSelected = item => item.id === selectedId;
const reordered = [...initial].reverse();
console.log(reordered.find(matchesSelected)?.name); // Анна
console.log([].find(matchesSelected)); // undefined
Такой «локатор» является предикатом поиска в данных, а не CSS-селектором. Сложность одного find — O(n). При частых обращениях можно поддерживать Map по id, учитывая стоимость построения и обновления индекса. Уникальность и тип ключа должны быть частью контракта коллекции.