Convert some keys of A-tree to other key values

Existing:
[{ "id": 1005300265, "name": "Shen Lun", "parentId": "100520929", "children": [{ "id": 1005300266, "name": "Big Composition", "parentId" ": "1005300265", "children": null }] }, { "id": 1005300264, "name": "interview", "parentId": "100520929", "children": [{ "id": 1005300270, "name": "structured", "parentId": "1005300264", "children": null }, { "id": 1005300269, "name": "structured group", "parentId": "1005300264", " children": null }] }, { "id": 100520985, "name": "Writing test-quantity relationship",



























"parentId": "100520929",
"children": null
}, { "id": 1005300259, "name": "line test", "parentId": "100520929", "children": [{ "id": 1005300258 , "name": "Speech Comprehension and Expression", "parentId": "1005300259", "children": null }, { "id": 1005300263, "name": "Data Analysis", "parentId": "1005300259" , "children": null }, { "id": 1005300262, "name": "quantity relation", "parentId": "1005300259", "children": null }, { "id": 1005300261, "name": "Common sense", "parentId": "1005300259", "children": null }] }, {

























"id": 100520982,
"name": "Written Test General Course",
"parentId": "100520929",
"children": null
}, { "id": 100520984, "name": "Written Test - Common Sense", "parentId": "100520929", "children": null }] Goal: replace children with "twoSubject", and add "isTwoSubject": true, // change key // tree node filter treeKeyFilter(tree, func) { var that = this return tree.map(node ​​=> ({ …node })).filter(node ​​=> { node.twoSubject = node.children && that.treeKeyFilter(node.children, func) node.isTwoSubject = node .twoSubject && node.twoSubject.length ? true : false delete node.children

















return func(node) || (node.twoSubject && node.twoSubject.length)
})
},
[{ "id": 1005300259, "name": "line test", "isTwoSubject": true, "twoSubject": [ { "id": 1005300258, "name": "Verbal Comprehension and Expression" }, { "id": 1005300257, "name": "Judgment Reasoning" }, { "id": 1005300261, "name": "Common sense judgment " }, { "id": 1005300262, "name": "quantity relationship" }, { "id": 1005300263, "name": "Data analysis" }] }, { "id": 1005300264, "name": "interview", "isTwoSubject": true, "twoSubject": [{ "id": 1005300270, "name": "structured"


























}, { "id": 1005300269, "name": "structured group" }, { "id": 1005300268, "name": "leaderless group" }] }, { "id": 1005300265, "name" : "Shen Lun", "isTwoSubject": true, "twoSubject": [{ "id": 1005300266, "name": "Major Composition" }, { "id": 1005300267, "name": "Small Question Type" } ] }, { "id": 100520984, "name": "Writing test - common sense", "isTwoSubject": false, "twoSubject": null }, { "id": 100520985, "name": "Writing test -quantity relation", "isTwoSubject": false, "twoSubject": null }]



























   var array =  [{
    
                    
            "name": "公务员",
            "parentId": null,
            "children": [{
    
    
                "id": 100520982,
                "name": "笔试全科",
                "parentId": "100520929",
                "children": null
            }, {
    
    
                "id": 100520984,
                "name": "笔试行测-常识",
                "parentId": "100520929",
                "children": null
            }, {
    
    
                "id": 100520985,
                "name": "笔试行测-数量关系",
                "parentId": "100520929",
                "children": null
            }, {
    
    
                "id": 1005300259,
                "name": "行测",
                "parentId": "100520929",
                "children": null
            }, {
    
    
                "id": 1005300264,
                "name": "面试",
                "parentId": "100520929",
                "children": null
            }, {
    
    
                "id": 1005300265,
                "name": "申论",
                "parentId": "100520929",
                "children": [{
    
    
                "id": 1005300267,
                "name": "小题型",
                "parentId": "1005300265",
                "children": null
                }, {
    
    
                "id": 1005300266,
                "name": "大作文",
                "parentId": "1005300265",
                "children": null
                }]
            }]
        }]


        // 树节点过滤
        function treeFilter (tree, func) {
    
    
            return tree.map(node => ({
    
     ...node })).filter(node => {
    
    
                node.twoSubject = node.children && treeFilter(node.children, func)
                node.isTwoSubject = node.twoSubject && node.twoSubject.length > 0
                delete node.children
                return func(node) || (node.twoSubject && node.twoSubject.length)
            })
        }

        // 获取过滤后的A tree
        var filteredArray = treeFilter(array, node=>{
    
    
            return true
        })

        console.log(filteredArray)

const ass = (data) => {
    
    
 3         let item = [];
 4         data.map((list, i) => {
    
    
 5                 let newData = {
    
    };
 6                 newData.key= list.id;
 7                 newData.value = list.id;
 8                 newData.title = list.name;
 9                 newData.children = list.children  ? ass(children) : [];    //如果还有子集,就再次调用自己
10                 item.push(newData);
11         });
12         return item;
13  }


 

Guess you like

Origin blog.csdn.net/sinat_36017053/article/details/122480385