@flafy4

Как реализовать рекурсивную генерацию объекта по строке?

Есть строка типа: 'param1-param2-param3', помогите пожалуйста написать функцию которая из этой строки, вернет объект такого вида:
{
            param1: {
                param2: {
                    param3: 'final'
                }
            }
        }
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
А почему строка? Могли бы и сами догадаться её в массив порезать:

const arr = str.split('-');
const end = 'final';

Использовать рекурсию не нужно, перебираем массив от конца к началу, на каждом шаге создаём объект с единственным свойством, в качестве ключа используется текущий элемент, значение - объект, полученный на предыдущем шаге:

const obj = arr.reduceRight((acc, n) => ({ [n]: acc }), end);

Но, конечно, если очень хочется, то рекурсия возможна:

const obj = (function createObj(arr, i, end) {
  return i < arr.length
    ? { [arr[i]]: createObj(arr, i + 1, end) }
    : end;
})(arr, 0, end);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы