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)));

 

posted on 2018-04-20 08:35  霞光2016  阅读(173)  评论(0编辑  收藏  举报

导航