Convert delimited string into hierarchical JSON with JQuery

前端 未结 1 1394
别跟我提以往
别跟我提以往 2020-12-02 21:37

I have an array of strings that describe the parent/child relationship by being delimited with dashes. So, if Bob\'s boss was Jim and Jim\'s boss was Fred, Bob\'s entry in

相关标签:
1条回答
  • 2020-12-02 21:44
    var input = ["Fred-Jim-Bob", "Fred-Jim", "Fred-Thomas-Rob", "Fred"];
    var output = [];
    for (var i = 0; i < input.length; i++) {
        var chain = input[i].split("-");
        var currentNode = output;
        for (var j = 0; j < chain.length; j++) {
            var wantedNode = chain[j];
            var lastNode = currentNode;
            for (var k = 0; k < currentNode.length; k++) {
                if (currentNode[k].name == wantedNode) {
                    currentNode = currentNode[k].children;
                    break;
                }
            }
            // If we couldn't find an item in this list of children
            // that has the right name, create one:
            if (lastNode == currentNode) {
                var newNode = currentNode[k] = {name: wantedNode, children: []};
                currentNode = newNode.children;
            }
        }
    }
    

    output JSONifies as:

    [{
        "name": "Fred",
        "children": [{
            "name": "Jim",
            "children": [{
                "name": "Bob",
                "children": []
            }]
        }, {
            "name": "Thomas",
            "children": [{
                "name": "Rob",
                "children": []
            }]
        }]
    }]
    
    0 讨论(0)
提交回复
热议问题