JS 递归操作代码例子

71 篇文章 0 订阅
65 篇文章 6 订阅


function InsertIntoTree(param,node,level) //递归遍历存储数据
{
    var iFind = param.indexOf('\\');
    var vName = param;
    var vPath = "";
    if(level<1)
    {
        return;
    }
    level--;
    if(iFind>0)
    {
        vPath = param;
        vName = vName.splice(iFind,vName.length);
        vPath = vPath.splice(0,iFind+1);
    }
    var vChild;
    vChild = 
    {
        sName:vName,
        sChild:[]
    }
    node.sChild.push(vChild);
    if(vPath.length)
    {
        InsertIntoTree(vPath,vChild,level);
    }
}

function InsertIntoHtml(elem,path,level)
{
    var iFind = path.indexOf('\\');
    var vName = path;
    var vPath = "";
    //stdout.println("parent: "+elem.$(caption).text+" ,child: "+path);
    if(level<1 || path.length < 1)
    {
        return;
    }
    level--;
    var vArr = elem.$$(option);
    if(iFind>0)
    {
        vPath = path;
        vName = vName.splice(iFind,vName.length);
        vPath = vPath.splice(0,iFind+1);
    }
    var i;
    var vChildElem = null;
    for(i=0;i<vArr.length;i++)
    {
        var vSpanArr = vArr[i].$$(span);
        if(vSpanArr.length)
        {
            if(vName == vSpanArr[1].text)
            {
                vChildElem = vArr[i];
                InsertIntoHtml(vChildElem,vPath,level);
                break;
            }
        }
    }
    if(i>=vArr.length)
    {
        vChildElem = CombinationTree(elem,vName,level);
        elem.append(vChildElem);
        var tmpArr = elem.$$(option);
        vChildElem = tmpArr[tmpArr.length-1];
        InsertIntoHtml(vChildElem,vPath,level);
    }
}

function ConstructTree(elem,node ,level)  //树数据插入.
{

    var i;
    var vArr = elem.$$(option);
    var vChildElem = null;
    
    for(i=0;i<vArr.length;i++)
    {
        var vSpanArr = vArr[i].$$(span);
        if(vSpanArr.length)
        {
            if(node.sName == vSpanArr[1].text)
            {
                vChildElem = vArr[i];
                break;
            }
        }
    }
    level--;
    if(i>=vArr.length)
    {
        if(level>0)
        {
            vChildElem = CombinationTree(elem,node.sName,1);
        }
        else
        {
            vChildElem = CombinationTree(elem,node.sName,0);
        }
        elem.append(vChildElem);
        var tmpArr = elem.$$(option);
        vChildElem = tmpArr[tmpArr.length-1];
    }
    if(level<1)
    {
        return;
    }
    stdout.println("ConstructTree name:"+node.sName);
    if(node.sChild == undefined)
    {
        stdout.println("ConstructTree sChild is null");
        return;
    }
    stdout.println("ConstructTree length:"+node.length);
    for(i=0;i<node.sChild.length;i++)
    {
        var vChildNode = node.sChild[i];
        ConstructTree(vChildElem ,vChildNode ,level);
    }
}

function CombinationTree(PathName,AllPath,bHasAppendChild)
{
    var vOutHtml;
    if(bHasAppendChild>0)
    {
        vOutHtml = "<option     bHasAppendChild=1  filename=\""+AllPath+"\">\
            <caption><span class=\"FileIcon\"></span><span  >"+AllPath+"</span></caption>\
        </option>"
    }
    else
    {
        vOutHtml = "<option    bHasAppendChild=0  filename=\""+AllPath+"\">\
                <caption><span class=\"FileIcon\"></span><span  >"+AllPath+"</span></caption>\
            </option>"
    }
    var FilePath = "<option      filename="+AllPath+">\
            <caption><span class=\"FileIcon\"></span><span  >"+AllPath+"</span></caption>\
        </option>"
    return vOutHtml;
}

function printTree(node ,path)   //输出打印  备用
{
    stdout.println("path: "+path+" ,name:"+node.sName);
    var i;
    var vNextPath  = node.sName;
    if(path.length)
    {
        vNextPath = path +"\\"+ node.sName;
    }
    
    for(i=0;i<node.sChild.length;i++)
    {
        printTree(node.sChild[i],vNextPath);
    }
}


    for(var i = 0;i<ArrNode.length;i++)  //结束就是出去的条件
    {
        var vNextPath  = ArrNode[i].name;
        if(ArrNode.length)  
        {
            vNextPath = HeadPath +"\\"+ ArrNode[i].name;
        }
        SetArrFolderPath(ArrNode[i].items,vNextPath,ArrNode[i].key);
    }

NextKey: 0 ,ArrNode: 3,HeadPath:H:
NextKey: 0.0 ,ArrNode: 0,HeadPath:H:\System Volume Information
NextKey: 0.1 ,ArrNode: 1,HeadPath:H:\$RECYCLE.BIN
NextKey: 0.1.0 ,ArrNode: 0,HeadPath:H:\$RECYCLE.BIN\S-1-5-21-1485814674-1413311373-161491199-1001
NextKey: 0.2 ,ArrNode: 2,HeadPath:H:\aaa
NextKey: 0.2.0 ,ArrNode: 1,HeadPath:H:\aaa\bbb
NextKey: 0.2.0.0 ,ArrNode: 1,HeadPath:H:\aaa\bbb\ccc
NextKey: 0.2.0.0.0 ,ArrNode: 1,HeadPath:H:\aaa\bbb\ccc\dddd
NextKey: 0.2.0.0.0.0 ,ArrNode: 1,HeadPath:H:\aaa\bbb\ccc\dddd\eee
NextKey: 0.2.0.0.0.0.0 ,ArrNode: 1,HeadPath:H:\aaa\bbb\ccc\dddd\eee\hhhh
NextKey: 0.2.0.0.0.0.0.0 ,ArrNode: 1,HeadPath:H:\aaa\bbb\ccc\dddd\eee\hhhh\nnnn
NextKey: 0.2.0.0.0.0.0.0.0 ,ArrNode: 1,HeadPath:H:\aaa\bbb\ccc\dddd\eee\hhhh\nnnn\mmmm
NextKey: 0.2.0.0.0.0.0.0.0.0 ,ArrNode: 0,HeadPath:H:\aaa\bbb\ccc\dddd\eee\hhhh\nnnn\mmmm\ffff
NextKey: 0.2.1 ,ArrNode: 1,HeadPath:H:\aaa\rrrrr
NextKey: 0.2.1.0 ,ArrNode: 2,HeadPath:H:\aaa\rrrrr\ttttt
NextKey: 0.2.1.0.0 ,ArrNode: 0,HeadPath:H:\aaa\rrrrr\ttttt\44444444
NextKey: 0.2.1.0.1 ,ArrNode: 0,HeadPath:H:\aaa\rrrrr\ttttt\ggggg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值