<pre><code id="answer"></code></pre>
const entries = [
{
index: 1,
parent: 0
},
{
index: 2,
parent: 1
},
{
index: 3,
parent: 2
},
{
index: 4,
parent: 2
},
{
index: 5,
parent: 4
},
{
index: 6,
parent: 5
},
{
index: 7,
parent: 6
},
{
index: 8,
parent: 7
},
{
index: 9,
parent: 8
},
{
index: 10,
parent: 9
},
{
index: 11,
parent: 7
},
{
index: 13,
parent: 11
},
{
index: 12,
parent: 0
}
];
const arrayToTree = (arr, parent = 0) =>
arr.filter(item => item.parent === parent)
.map(child => ({ ...child, children: arrayToTree(arr, child.index) }));
const span = document.getElementById("answer");
span.innerHTML = JSON.stringify(arrayToTree(entries),null,2)
This Pen doesn't use any external CSS resources.