0 votos

Obtener nivel máximo de la profundidad de un JSON anidado

Hola! tngo un JSON que tiene éste aspecto: var arbol = [ {"id":1, "code":1,"children": [ {"id":11,"code":11}, {"id":12,"code":12}] }, {"id":2, "code":2, "children": [{"id":21,"code":21}, {"id":22,"code":22, "children": [ {"id":221,"code":221}, {"id":222,"code":222} ] } ] } ]; $.get('https://10.15.112.69/desarrollo/mapas/datos/diag/PRUEBA', function(data) {

var str = data ; var jsonObj = $.parseJSON('[' + str + ']');

recorrerArbol (jsonObj,0);

});

Y lo recorro con ésta función:

function recorrerArbol(json,c){

var type;

var resultado;

for (var i=0; i < json.length; i++){  

    type = typeof json[i].children;

    if (type=="undefined"){

        resultado = true;                                     
        alert( json[i].id );

    }else{

        alert( json[i].id );

        resultado = recorrerArbol(json[i].children);

        }

}

return resultado;

}

Me da los 'id' , pero necesitaría saber el nivel en el que se encuentra ese 'id'. ¿alguien sabe cómo hacerlo?

Mil gracias !!

1voto

Ivan Muñoz Puntos 1120

Prueba si funciona cambiando tu funcion por esta:

function recorrerArbol(json,c){
    var type;

    var resultado;

    for (var i=0; i < json.length; i++){  

        type = typeof json[i].children;

        if (type=="undefined"){

            resultado = true;                                     
            alert( "Id: "+json[i].id +" Profundidad: "+c );

        }else{

            alert( "Id: "+json[i].id +" Profundidad: "+c);

            resultado = recorrerArbol(json[i].children, c+1);

        }

    }

    return resultado;

}

0 votos

Funciona!!! Muchísimas gracias, Ivan!

0 votos

De nada :)

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: