Как превратить путь из строки во вложенный объект

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

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

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

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

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

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

Условие

Для непустого пути a.b.c и значения 1 нужно получить {a:{b:{c:1}}}. Сегменты должны быть обычными именами; запрещены proto, constructor и prototype. Сравните рекурсию и итерацию.

Ответ

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

Алгоритм: разбить путь по точкам, отклонить пустые и запрещённые сегменты, затем return keys.reduceRight((acc, key) => ({ [key]: acc }), value). Рекурсивная версия наглядна, но расходует стек на глубину пути. Для обеих задайте предел длины входа. Не записывайте произвольный путь в существующий объект без защиты от prototype pollution.

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

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

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

Подробнее