Как построить поиск элемента массива по устойчивому ключу

Сохраняйте уникальный 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, учитывая стоимость построения и обновления индекса. Уникальность и тип ключа должны быть частью контракта коллекции.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее