快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

JavaScript之parentId转换成children数据,并解析

1.用parentId的数据格式转换成有children的数据

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:国际域名空间、网络空间、营销软件、网站建设、内丘网站维护、网站推广。

var array = [];
    var iterator1 = function (treeNodes) {
        if (!treeNodes || !treeNodes.length) return;
		var parent,i = 0,obj = {};
		while(i < treeNodes.length ){
			node = treeNodes[i++];
			obj[node.id] = node;
			if(node.parentId){
				parent = obj[node.parentId];
				if(parent.children){
					node["parIndex"] = parent.parIndex +"."+ (parent.children.length + 1);
					node.cell[0] = node["parIndex"];
					parent.children.push(node);
				}else{
					node["parIndex"] = parent.parIndex +"."+ 1;
					node.cell[0] = node["parIndex"];
					parent.children = [node];
				}
			}else{
				node["parIndex"] = 1;
				array.push(node);
			}
		}
		
        return array;
    };

    console.log('------------- 递归 ------------------');
    iterator1(treeNodes);

2.将有children的数据拆成平级对象(非递归深度优先)(1   1.1    1.2    2 ...)

var array1 = [];
    var iterator2 = function (treeNodes) {
        var stack = [];

        if (!treeNodes || !treeNodes.length) return;

        //先将第一层节点放入栈
        for (var i = 0, len = treeNodes.length; i < len; i++) {
            stack.push(treeNodes[i]);
        }

        var item;

        while (stack.length) {
            item = stack.shift();

            console.log(item.id);
			
            //如果该节点有子节点,继续添加进入栈顶
            if (item.children && item.children.length) {
                stack = item.children.concat(stack);
            }
			delete item.children;
			delete item.parIndex;
			array1.push(item);
        }
    };

    console.log('------------- 非递归深度优先实现 ------------------');
    iterator2(array);

3.非递归广度优先(1     2   1.1   1.2 ...)

//非递归广度优先实现
    var iterator1 = function (treeNodes) {
        var stack = [];

        if (!treeNodes || !treeNodes.length) return;

        //先将第一层节点放入栈
        for (var i = 0, len = treeNodes.length; i < len; i++) {
            stack.push(treeNodes[i]);
        }

        var item;

        while (stack.length) {
            item = stack.shift();

            console.log(item.id);

            //如果该节点有子节点,继续添加进入栈底
            if (item.children && item.children.length) {

                stack = stack.concat(item.children);
            }
        }
    };

    console.log('------------- 非递归广度优先实现 ------------------');
    iterator1(treeNodes);

文章标题:JavaScript之parentId转换成children数据,并解析
URL分享:http://6mz.cn/article/phopcc.html

其他资讯