JS根据字符循环树形结构

var w = 'a||a1||a2,b||b1,c||c1||c2,a';

function start(str) {
    var strArr = str.split(',');

    var selectedArr = [];
    var selectedMap = {};

    strArr.map(function (v) {
        return v.split('||');
    }).forEach(function (v) {
        var parent;
        var parentCode;
        var child;
        var childCode;
        var childrenArr;
        var len = v.length;

        if (len === 1) {
            parentCode = v[0];
            parent = selectedMap[parentCode];
            if (!parent) {
                genObj(selectedMap, selectedArr, parentCode);
            }
        } else {
            for (var i = 1; i < len; i++) {
                parentCode = v[i - 1];
                parent = selectedMap[parentCode];

                if (!parent) {
                    childrenArr = selectedArr;
                    genObj(selectedMap, childrenArr, parentCode);
                    parent = selectedMap[parentCode];
                }
                childCode = v[i];
                childrenArr = parent.children;
                genObj(selectedMap, childrenArr, childCode);

            }
        }

    })
    
    return selectedArr;
}

console.log(JSON.stringify(start(w)));

 

转载于:https://www.cnblogs.com/jsfun/p/8888038.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值