Всем привет! Очень прошу помочь с решением задачи.
Есть дерево:
<body>
<ul id="tree">
<li data-id="0">Автомобили
<ul>
<li data-id="1">Japan
<ul>
<li data-id="2">Toyota
<ul>
<li data-id="3">Camry</li>
<li data-id="4">Avensis</li>
</ul>
</li>
<li data-id="5">Mazda</li>
</ul>
</li>
</ul>
</ul>
</body>
необходимо это дерево поместить в объект вида:
var cars={
Автомобили:{"children":[1], id="0"},
Japan: {"children":[2], id="1"},
Toyota:{"children":[3, 4], id="2"},
Mazda:{"children":[], id="5"}
}
пробовал разными способами делать обход дерева, но ничего не получается.
Через рекурсию:
function scan(el, obj) {
var nodeList = el.childNodes;
if (nodeList != null) {
obj["children"]=[];
for (var i = 0; i < nodeList.length; i++) {
if (nodeList[i].nodeType == 1) {
if(nodeList[i].firstChild.nextSibling.dataset.id)
obj["child"].push(nodeList[i].firstChild.nextSibling.dataset.id);
}
scan(nodeList[i], obj["children"]);
}
}
return obj;
}
scan(document.getElementById('tree'), {})