Deprecated: Function create_function() is deprecated in /home/nekdyruf/public_html/codi/wp-content/plugins/wp-syntax/geshi/geshi.php on line 4751
A continuación os dejo una función recursiva JavaScript que he utilizado para recorrer objetos JSON.
Si por ejemplo tenemos un objeto JSON tal que así:
var arbol = [ {"id":1, "code":1,"hijos": [ {"id":11,"code":11}, {"id":12,"code":12}] }, {"id":2, "code":2, "hijos": [{"id":21,"code":21}, {"id":22,"code":22, "hijos": [ {"id":221,"code":221}, {"id":222,"code":222} ] } ] } ] |
Con esta función recorremos todos los nodos del JSON recursivamente y sacamos un alert por cada ID de cada nodo.
function recorrerArbol(json) { var type; var resultado; for (var i=0; i<json.length; i++){ type = typeof json[i].hijos; if (type=="undefined"){ resultado = true; alert(json[i].id); } else{ alert(json[i].id); resultado = recorrerArbol(json[i].hijos); } } return resultado; } |
Para llamar a la función utilizamos simplemente:
recorrerArbol(arbol);
Si además de recorrer el objeto queremos modificar algún valor de sus nodos se puede modificar la función anterior para que lo realice, por ejemplo queremos cambiar el Id=22 por Id = 12345
function recorrerYReemplazarArbol(json, valorOrig, valorDest) { var type; var resultado; for (var i=0; i<json.length; i++){ type = typeof json[i].hijos; if (type=="undefined"){ resultado = true; alert(json[i].id); if (json[i].id==valorOrig){ json[i].id = valorDest; alert("Modificado: "+json[i].id); } } else{ alert(json[i].id); if (json[i].id==valorOrig){ json[i].id = valorDest; alert("Id Modificado: "+json[i].id); } resultado = recorrerYReemplazarArbol(json[i].hijos, valorOrig, valorDest); } } return resultado; } |
Para llamar a la función utilizamos simplemente:
recorrerYReemplazarArbol(arbol, “22”, “12345”);
Espero que os sirva de ayuda