簡體   English   中英

使用javascript數組創建MLM類型樹結構

[英]Create MLM type tree structure with javascript array

我想創建MLM類型樹結構。 我的所有子項都有數組ARR ,並且ARR數組再次包含其中存在的所有子數組。

例:

ARR['MainArr'] = aray('child1'=>'child1 val', 'child2'=>'child2 val');

ARR['child1'] = array('subchild1'=>'subchild1 val');

ARR['child2'] = array('...'=>'...');

ARR['subchild1'] = array('...'=>'...');

等等...

我想遞歸地循環所有這些數組,而不使用任何函數(如果可能)來獲取並打印其所有子孩子,直到打印所有孩子。

在下面的示例中, parsedAllSpurs數組包含所有子子項,就像此處的ARR數組一樣。

tmpHN = spurs.hostname;
while(typeof(parsedAllSpurs[tmpHN]) !== 'undefined'){
    if(typeof(parsedAllSpurs[tmpHN]) !== 'undefined'){
        $.each(parsedAllSpurs[tmpHN], function(k, allSpurs){
            tmpHN1 = allSpurs.hostname;
            log(tmpHN1);
            log(allSpurs);

            while(typeof(parsedAllSpurs[tmpHN1]) !== 'undefined'){
                if(typeof(parsedAllSpurs[tmpHN1]) !== 'undefined'){
                    $.each(parsedAllSpurs[tmpHN1], function(j, allSpurs1){
                        tmpHN2 = allSpurs1.hostname; 
                        //log(tmpHN2);
                        log(allSpurs1);

                        while(typeof(parsedAllSpurs[tmpHN2]) !== 'undefined'){
                            if(typeof(parsedAllSpurs[tmpHN2]) !== 'undefined'){
                                $.each(parsedAllSpurs[tmpHN2], function(l, allSpurs2){
                                    tmpHN2 = allSpurs2.hostname;     
                                    log(allSpurs2);

                                })

                            }
                        }

                        tmpHN1 = allSpurs1.hostname;
                    });                                                
                }
            }

            tmpHN = allSpurs.hostname;
        });
    }

在嵌套循環https://en.wikipedia.org/wiki/Recursion上使用遞歸代替。 創建將其用作一級功能的函數,並在每次發現嵌套結構時調用此函數。

function processStructure(data){
    processData(data);
    if(hasChildren(data)){
        processStructure(data);
    }
}
processStructure(initialData);

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM