Javascript code processing for c# (treeSample)

Asked

Viewed 44 times

0

I’m trying to pass a code running in javascript, for c# I’m having difficulty with the syntax, the code transforming the list of data into a tree structure. someone could help?

// Array de dados. A primeira coluna é o valor do nó; a segunda, indica o nó pai.
var dados = [
    [ "Dado 1", null ],
    [ "Dado 2", 1    ],
    [ "Dado 3", 1    ],
    [ "Dado 4", 2    ],
    [ "Dado 5", 2    ],
    [ "Dado 6", 4    ],
    [ "Dado 7", 5    ]
];

// Declaração do array que conterá cada nó:
var nos = [];

// Transformação de cada elemento do array de dados em um nó (ainda sem relacionamento):
for(var i = 0; i < dados.length; i++){
    nos.push({
        valor: dados[i][0],
        filhos: []
    });
}

/*
  CRIAÇÃO DOS RELACIONAMENTOS:
  A ideia é que cada nó procure por seus filhos no array de dados; como o índice de um
  elemento no array de dados é exatamente o mesmo índice do seu respectivo nó, no array
  de nós, basta que cada nó procure no array de dados quais deles fizeram referência a ele:
*/
for(var i = 0; i < nos.length; i++){
    for(var j = 0; j < dados.length; j++){
        if(i+1 == dados[j][1]) nos[i].filhos.push(nos[j]); // i+1 porque os índices começam em 0.
    }
}

// Imprime o resultado:
print(nos[0], "&rarr; "); // nos[0] representa o nó raiz da árvore.


//==============================================================================================


/*
  EXTRA:
  Função recursiva para imprimir a árvore (com busca em profundidade), apenas para visualizar
  o resultado.
  Varia bastante de linguagem para linguagem, no JavaScript está é uma das formas de fazer:
*/
function print(no, recuo){
    var p = document.createElement("p"); // Cria um parágrafo HTML.
    p.innerHTML = recuo + no.valor;      // Seta o texto deste parágrafo para indentação + valor.
    document.body.appendChild(p);        // Joga o parágrafo na tela (torna visível).
    // Se possuir filhos...
    if(no.filhos.length > 0) for(var i = 0; i < no.filhos.length; i++){
        // ...imprime cada um deles, com um recuo 8 espaços maior:
        print(no.filhos[i], "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + recuo);
    }
}

  • It is even necessary to create this tree using exactly the same code, or it would be better to create the tree with the ideal code for C#?

  • Be a little more specific; What’s your problem? You don’t know which structure in . Net to use?

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.