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