Установление отношений между родителями и детьми - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть одна строка JSON с родительским идентификатором

[{"id":"1","href":"#","text":"ABC","parentid":null},
{"id":"2","href":"#","text":"DEF","parentid":1},
{"id":"3","href":"#","text":"GHI","parentid":2},
{"id":"4","href":"#","text":"JKL","parentid":2}]

Теперь я пытаюсь сделать что-то вроде этого

enter image description here

У меня есть успех, чтобы сделать это с помощью кода ниже, но я чувствую, что это может быть больше настройки с лучшим подходом.Мой подход может быть сделан только для двухуровневого, но я искал номер уровня.Кто-нибудь может мне помочь?

data.d.results.map(function(item, i) {
        delete item['__metadata']
        var label = item.Title
        var parentid = item.ParentMenuId
        var id = item.Id
        var url = item.Link

        var _item = { id: id, href: url, text: label, children: [] }
        if (!parentid) {
          source.push(_item)
        } else {
          var chd = true
          for (var i = 0; i < source.length; i++) {
            if (source[i]["id"] == parentid) {
              source[i]["children"].push(_item)
              chd = false
              break
            }
          }
          if (chd == true) {
            for (var i = 0; i < source.length; i++) {
              if (source[i]["children"].length > 0) {
                for (var j = 0; j < source[i]["children"].length; j++) {
                  if (source[i]["children"][j]["id"] == parentid) {
                    source[i]["children"][j]["children"].push(_item)
                    break
                  }
                }
              }
            }
          }
        }
      })
...