js 一维数组转成tree 对象



	
		
		
	
	
		
	



---------------------------------------------------------------
/*转化函数*/
function(data, attributes) {
    let resData = data;
    let tree = [];
    for(let i = 0; i < resData.length; i++) {
        if(resData[i][attributes.parentId] === attributes.rootId) {
            let obj = {
                id: resData[i][attributes.id],
                title: resData[i][attributes.name],
                children: []
            };
            tree.push(obj);
            resData.splice(i, 1);
            i--;
        }
    }
    run(tree);
 
    function run(chiArr) {
        if(resData.length !== 0) {
            for(let i = 0; i < chiArr.length; i++) {
                for(let j = 0; j < resData.length; j++) {
                    if(chiArr[i].id == resData[j][attributes.parentId]) {
                        let obj = {
                            id: resData[j][attributes.id],
                            title: resData[j][attributes.name],
                            children: []
                        };
                        chiArr[i].children.push(obj);
                        resData.splice(j, 1);
                        j--;
                    }
                }
                run(chiArr[i].children);
            }
        }
    }
 
    return tree;
 
}
1
var data=[{id:1,parentId:0,name:"测试1"},
1
{id:2,parentId:1,name:"测试2"}]
1
2
3
4
5

let attributes = { //定义数据属性名称 id: 'id', parentId: 'parentId', name: 'groupName',
rootId: 0 }
/*调用*/
formatTreeData(data,attributes);

  

  

转载于:https://www.cnblogs.com/qq735675958/p/10513695.html

你可能感兴趣的:(js 一维数组转成tree 对象)