partyzanx
@partyzanx

Как создать рекурсию в pug с созданием списка из объекта?

Дан объект
{
  "label": "蟆",
  "children": [
    {
      "label": "虫"
    },
    {
      "label": "莫",
      "children": [
        {
          "label": "艹"
        },
        {
          "label": "旲",
          "children": [
            {
              "label": "日"
            },
            {
              "label": "大"
            }
          ]
        }
      ]
    }
  ]
}


Теоретически этот объект может быть короче, длиннее или вообще быть пустым.
Этот объект раскрывает из каких мелких иероглифов состоит крупный иероглиф.
И дальше до конца из каких более мелких иероглифов состоит мелкий иероглиф.

Передаю данные с node.js в pug

Должно получиться

<ul>
    <li>蟆
       <ul>
        <li>虫</li> 
        <li>莫
              <ul>
              <li>艹</li> 
              <li>旲
                      <ul>
                      <li>日</li> 
                      <li>大</li> 
                      </ul>
                  </li> 
              </ul>
          </li> 
       </ul>
    </li>
</ul>

https://jsfiddle.net/xreider/j4bmhv3z/2/

Чувствую дело пахнет жаренным) И пора перебираться на ejs. Но, может быть, кто поможет?
  • Вопрос задан
  • 165 просмотров
Решения вопроса 1
@Shannon
Например, вот так, как вариант

-
 var obj = {
  "label": "蟆",
  "children": [
    {
      "label": "虫"
    },
    {
      "label": "莫",
      "children": [
        {
          "label": "艹"
        },
        {
          "label": "旲",
          "children": [
            {
              "label": "日"
            },
            {
              "label": "大"
            }
          ]
        }
      ]
    }
  ]
 }

mixin unpackKanji(obj)
  if(Array.isArray(obj))
    each item in obj
      +unpackKanji(item)
  else
    ul
      if(obj.children)
        li=obj.label
            +unpackKanji(obj.children)
      else
          li=obj.label

+unpackKanji(obj)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
28 нояб. 2024, в 05:21
2000 руб./за проект
28 нояб. 2024, в 05:18
500 руб./за проект
28 нояб. 2024, в 03:51
3500 руб./за проект