Объясните как работает данный код?

К своей грусти и печали не могу понять как работает данный код :-(
Какую роль тут выполняет obj в конце и почему туда рекурсивно добавляются элементы?
var options = 'a.b.c.d';
var parts = options.split('.');
var obj = {};
var result;
parts.reduce((part, i) => part[i] = {}, obj);

result = obj;
console.log(result);

/*
result wanted:
var result = {
  a: {
    b: {
      c: {
        d: {}
      }
    }
  }
}*/
  • Вопрос задан
  • 219 просмотров
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
стоит разобраться с методом массива reduce()

Upd. reduce() выполнится для каждой буквы: a, b, c и d.
В функцию аргументом i попадает очередная буква.
Аргументом part первый раз туда попадает пустой объект obj. И ссылка на него сохраняется - её и вернём как результат.
Внутри reduce функцию можно так переписать, делает то же самое:
function (part, i) {
  const empty = {}; // новая матрёшка
  part[i] = empty; // вложили её в предыдущую
  return empty; // новая матрёшка станет part'ом при следующем вызове
}
Ответ написан
Ваш ответ на вопрос

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

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