Получение значения из вложенной структуры по цепочке ключей

Последовательно проходите ключи, проверяя наличие каждого собственного свойства. При null, undefined или отсутствии ключа сразу возвращайте undefined; пустой путь возвращает сам объект.

Короткий ответ

Что ответить на собеседовании

Последовательно проходите ключи, проверяя наличие каждого собственного свойства. При null, undefined или отсутствии ключа сразу возвращайте undefined; пустой путь возвращает сам объект.

Подробный разбор

Ответ с пояснениями

Условие

Функция принимает список ключей и объект произвольной вложенности, извлекая значение по указанному пути. Если хотя бы один из ключей не найден, функция возвращает undefined.

Ответ

Последовательно проходите ключи, проверяя наличие каждого собственного свойства. При null, undefined или отсутствии ключа сразу возвращайте undefined; пустой путь возвращает сам объект.

function getNested(keys, object) {
  let current = object;
  for (const key of keys) {
    if (current == null || !Object.hasOwn(Object(current), key)) return undefined;
    current = current[key];
  }
  return current;
}

Путь задаётся массивом, поэтому имена с точкой не требуют специального экранирования. Нельзя проверять значение через if (!current[key]): 0, false и пустая строка являются допустимыми данными. Унаследованные свойства этот вариант намеренно не читает; getters при доступе могут выполнить код.

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

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

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

Подробнее