Как построить дерево ссылок на javascript?

348
18 марта 2017, 02:24

Подскажите пожалуйста как на javascript реализовать дерево ссылок. Например есть такой массив

var array = [
    {id: 1, parent: 0},
    {id: 2, parent: 1},
    {id: 3, parent: 2},
    {id: 4, parent: 1},
    {id: 5, parent: 3},
    {id: 6, parent: 4}
]

Как построить меню типа:

{
    id: 1,
    parent: 0,
    children: [
        {
            id: 2,
            parent: 1,
            children: [
                {
                    id: 3,
                    parent: 2,
                    children: [.....]
                }
            ]
        }
    ]
}
Answer 1

var array = [ 
    {id: 1, parent: 0}, 
    {id: 2, parent: 1}, 
    {id: 3, parent: 2}, 
    {id: 4, parent: 1}, 
    {id: 5, parent: 3}, 
    {id: 6, parent: 4} 
] 
 
function makeTree(input) { 
  var root = null; 
  var byId = {}; 
  var i; 
   
  for (i = 0; i < input.length; i++) { 
    if (input[i].parent == 0) 
      root = input[i]; 
       
    byId[input[i].id] = input[i]; 
    input[i].children = []; 
  } 
 
  for (i = 0; i < input.length; i++) { 
    if (byId[input[i].parent]) 
      byId[input[i].parent].children.push(input[i]); 
  } 
 
  return root; 
} 
 
console.log(makeTree(array));

READ ALSO
undefined добавляется к массиву

undefined добавляется к массиву

Когда вывожу элементы подмассива в ячейки таблицы через цикл for, то первым выводится undefined, а потом уже все элементы: undefined Hello world Phrase 23 qwerty...

261
Как работать с массивом в cookie на NodeJs

Как работать с массивом в cookie на NodeJs

Есть два запроса: /create /getlist В первом запросе я добавляю определенный элемент:

287
Не получается удалить элемент json JS

Не получается удалить элемент json JS

Есть строка, которая хранится в localstorage в формате json

332