【问题标题】:Create MLM type tree structure with javascript array使用 javascript 数组创建 MLM 类型树结构
【发布时间】:2015-11-30 04:02:27
【问题描述】:

我想创建 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;
        });
    }

【问题讨论】:

  • 你的代码在函数内吗?
  • 我并没有真正了解您的 parsedAllSpurs JavaScript 对象的结构。你能在你的代码中包含一个例子吗?喜欢var parsedAllSpurs = <something here>spurs.hostname 来自哪里? spurs 变量是什么?
  • 下面是parsedAllSuprs的结构,但是它的PHP数组,后来转成json对象array ( 'MIBHRAWLESR001' => array ( 0 => array ( 'hostname' => 'MIBHVENKESR001' 'media_type' => 'Microwave' ) 1 => array ( 'hostname' => 'ABCDEF000' 'media_type' => 'Microwave' ) 2 => array ( 'hostname' => 'MIBHSLSRESR001' 'media_type' => 'Microwave' ) ) )
  • 我的代码不在函数@aldrin27中
  • 我看不到该数组中任何元素之间的连接。您能否提供有关数组的更完整示例(请将其包含在您的问题中,而不是作为评论)?如果您想要一个 JavaScript 解决方案,我想最好将示例编写为 JavaScript 对象。或者你想要一个 PHP 解决方案吗?

标签: javascript php arrays recursion iteration


【解决方案1】:

在嵌套循环https://en.wikipedia.org/wiki/Recursion 上使用递归。 创建一个级别的函数,并在每次找到嵌套结构时调用此函数。

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

希望这会有所帮助。

【讨论】:

  • 我们不能不使用函数来做到这一点,就像我们可以使用 while 或 foreach 一样
  • 你的例子中的每一个都创建了匿名函数,一个函数有什么问题?您的代码包含复制粘贴,如果您要多一层怎么办?你会再复制一次吗?如果之后您需要添加数据处理怎么办?你会把它写到每个函数中?
猜你喜欢
  • 2021-04-19
  • 2019-10-24
  • 2019-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
相关资源
最近更新 更多