Obter o nível de uma hierarquia

Eu tenho uma matriz de objetos, onde cada objeto tem umid e umParentId propriedade (para que eles possam ser organizados em árvores). Eles não estão em nenhuma ordem particular.

Por favor, note que oid'areiaparentId's não serão números inteiros, eles serão seqüências de caracteres (só queria ter o código de exemplo mais limpo ..)

Existe apenas uma raiz: digamos queid: 1 Os dados são assim:

 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...
]

Eu estou procurando uma maneira eficiente de dar a cada objeto umlevel propriedade que deve especificar o nível aninhado é ...

Eles devem então ficar assim:

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...
]
Em resumo:

eu quero aquilolevel para ser adicionado dinamicamente via looping através da matriz e descobrir a hierarquia ..

Além disso, (se possível) eles devem ser classificados de acordo com a ordem, como por exemplo todos os objetoslevel:3Os pais do mesmo pai devem estar próximos um do outro, não que devam existir irmãos do mesmo pai ao lado um do outro, em vez de dois primos do nível 3 um ao lado do outro.

questionAnswers(4)

yourAnswerToTheQuestion