Visualizzazione dei risultati da 1 a 5 su 5

Discussione: graph visit

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590

    graph visit

    il classico degli esempi scolastici della programmazione ricorsiva, si vede che sono arrugginito
    Devo fare una visita ad un albero così formato:
    - nodi figli sono contenuti in un array '_children'
    - nodi foglia (che sono di tipo 'placeholder' o 'des') contengono un array 'elementi'

    Voglio restituire un array con tutti gli 'elementi' dell'albero, l'ordine (dfs, bfs,..) non importa.

    codice:
    function dfs(node){    var out=new Array();
        if(node.type=='placeholder' || node.type=='des') {
            $.each( node.articoli, function( key, elm) {
                out.push(elm)
            })
            return out;
        } else                                         
            if(node._children){
                    $.each( node._children, function( key, nod ) {
                        return out.concat(dfs(nod))
                    })
            }
    }
    evidentemente c'è qualcosa di semplice che mi sfugge (non sono sicuro di quel out.concat)
    Ultima modifica di jimbo0; 24-07-2015 a 01:37

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, concat dovrebbe essere corretto visto che joina piu' array. Il fatto che faccia subito un return nel secondo IF penso sia perchè node._children abbia un solo elemento. var out=new Array() in testa alla funzione non vorrei però resettasse sempre il contenuto di out stesso (non hai postato che risultato ottieni ora).

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    mi restituisce undefined..
    non fa subito il return, se dopo out.push(elm) faccio un console.log(elm) mi stampa correttamente gli elementi..quindi scorre correttamente..ma non costruisce l'array out
    Ultima modifica di jimbo0; 28-07-2015 a 01:09

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    .
    Ultima modifica di jimbo0; 28-07-2015 a 01:09 Motivo: doppio

  5. #5
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Prova a sostituire l'each di jQuery ed usare un classico for, per quanto possa sembrar strano l'each di jquery funziona un po' come una cosa asyncrona, potrebbe essere che il return non torni il risultato aspettato.
    Potresti se no provare a combinare promise() all'each e vedere che succede.
    Ultima modifica di m4rko80; 28-07-2015 a 08:31

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.