salve, ho un array
var stack=new Array('N1','N15');
e file json così costituito
codice:
{ "name": "root",
"id": "N0",
"type": "root",
"children": [
{
"name": "livello1",
"size": 2000,
"id": "N1",
"children": [
{
"name": "livello2",
"size": 1000,
"id": "N12",
"children": null
}
...
in altre parole un semplice json multidimensionale.
Vorrei scorrere questo file e aggiungere ad un array di supporto (activenodes) un riferimento al nodo con id=NXX.
il codice è questo, ma è veramente brutto, e per ora copre solo il primo livello di profondità del json, per coprire i restanti dovrei fare altri for nidificati.
C'è modo di migliorare il tutto con una funzione ricorsiva o comunque più efficiente?
Ho provato con la ricorsione ma come vedete non è possibile in maniera immediata, il controllo su nodeid lo faccio in maniera diversa sul livello 0 e sugli altri livelli (prima value==nodeid e poi nodeid==obj.id) vorrei almeno uniformare tutto al secondo metodo..
codice:
function SeekAndPush(json,nodeid){
$.each(json, function(key, value) {
if(key==='id'&& value==nodeid) {
activenodes.push(json)
}
if(key=='children' ) {
$.each(value, function(i,obj) {
if(nodeid==obj.id) {
console.log(obj)
activenodes.push(obj)
}
})
}
});
}