Получить уровень иерархии

У меня есть массив объектов, где каждый объект имеетid иParentId собственности (чтобы они могли быть расположены в деревьях). Они не в определенном порядке.

Обратите внимание, чтоidс и 'parentIds не будут целыми числами, они будут строками (просто хотелось, чтобы образец кода был чище ..)

Существует только один корень: скажем, егоid: 1 Данные выглядят так:

 data = [
   {
        id:"id-2",
        parentId:"id-3"
    },
    {
        id:"id-4",
        parentId:"2"
    },
    {
        id:"id-3",
        parentId:"id-4"
    },
    {
        id:"id-5",
        parentId:"id-4"
    },
    {
        id:"id-6",
        parentId:"id-1"
    },
    {
        id:"id-7",
        parentId:"id-1"
    }
    // and so on...
]

Я ищу эффективный способ дать каждому объектуlevel свойство, которое должно указывать вложенный уровень это ...

Затем они должны выглядеть так:

data = [
    {
        id:"id-2",
        parentId:"id-1",
        level:2
    },
    {
        id:"id-3",
        parentId:"id-4",
        level:5

    },
    {
        id:"id-4",
        parentId:"id-2",
        level:3

    },
    {
        id:"id-5",
        parentId:"id-4",
        level:5
    },
    {
        id:"id-6",
        parentId:"id-1",
        level:2

    },
    {
        id:"id-7",
        parentId:"id-3",
        level:4
    }
    // and so on...
]
Короче:

Я хочу чтобыlevel быть добавленным динамически через цикл через массив и выяснение иерархии ..

Кроме того, (если возможно) они должны быть отсортированы в соответствии с их порядком, как, например, все объектыlevel:3s от одного и того же родителя должны быть рядом друг с другом, не то чтобы рядом должны быть братья и сестры одного и того же родителя, а не два кузена уровня 3 рядом друг с другом.

Ответы на вопрос(4)

Ваш ответ на вопрос