Можно пройти сегменты справа налево, оборачивая текущее значение в новый объект. Это избегает глубокой рекурсии; вход нужно валидировать до построения.
Как превратить путь из строки во вложенный объект
Можно пройти сегменты справа налево, оборачивая текущее значение в новый объект. Это избегает глубокой рекурсии; вход нужно валидировать до построения.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Для непустого пути a.b.c и значения 1 нужно получить {a:{b:{c:1}}}. Сегменты должны быть обычными именами; запрещены proto, constructor и prototype. Сравните рекурсию и итерацию.
Ответ
Можно пройти сегменты справа налево, оборачивая текущее значение в новый объект. Это избегает глубокой рекурсии; вход нужно валидировать до построения.
Алгоритм: разбить путь по точкам, отклонить пустые и запрещённые сегменты, затем return keys.reduceRight((acc, key) => ({ [key]: acc }), value). Рекурсивная версия наглядна, но расходует стек на глубину пути. Для обеих задайте предел длины входа. Не записывайте произвольный путь в существующий объект без защиты от prototype pollution.