@intriga93

Как перебрать объекты с вложенностью?

чтобы потом можно было создать ul> li>ul> li>ul>li с данными из объекта
https://jsfiddle.net/fLpjkzsw/1/
  • Вопрос задан
  • 208 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Чтобы дальше два раза одно и то же не писать, небольшой декоратор:

const processNonEmptyObjectOnly = (f, defaultResult) =>
  data => (
    data = data instanceof Object ? Object.entries(data) : [],
    data.length ? f(data) : defaultResult
  );

Собираем разметку:

const createTreeHTML = processNonEmptyObjectOnly(data => `
  <ul>${data.map(n => `
    <li>
      ${n[0]}
      ${createTreeHTML(n[1])}
    </li>`).join('')}
  </ul>`
, '');


document.body.insertAdjacentHTML('beforeend', createTreeHTML(data));

Или, создаём элементы напрямую:

const createTreeElement = processNonEmptyObjectOnly(data =>
  data.reduce((ul, n) => (
    ul.append(document.createElement('li')),
    ul.lastChild.append(n[0], createTreeElement(n[1])),
    ul
  ), document.createElement('ul'))
, '');


document.body.append(createTreeElement(data));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
вызов функции из функции называется рекурсией
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы