js数组转成树形结构

js将数组转成对应的树形结构:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
function transformArrayToObject(array) {
    const result = {};
    array.forEach(item => {
        const {id,name,pid,flag} = item;
        if (pid == 0) {
            result[name] = {id,flag,pid}
        } else {
            transformObj(result, item)
        }
    });
    return result;
}
 
function transformObj(obj, item) {
    const {id,name,pid,flag} = item;
    for (var key in obj) {
        var val = obj[key]
        if (key != 'id') {
            if (typeof val === 'object') {
                transformObj(val, item)
            }
        } else {
            if (val == pid) {
                obj[name] = {id,flag,pid}
                break;
            }
        }
    }
    return obj
}
 
function adjustObj(obj) {
    let flag = false;
    for (var key in obj) {
        if (typeof obj[key] === 'object') {
            obj[key] = adjustObj(obj[key]);
            flag = true
        }
    }
    if (!flag) {
        obj = obj.flag
    }
    return obj
}
 
const array = [{id: 1,name: 'index',pid: 0,flag: true},
{id: 2,name: 'monitor',pid: 1,flag: true},
{id: 3,name: 'scan',pid: 1,flag: true},
{id: 4,name: 'subscan',pid: 3,flag: false},
{id: 5,name: 'legder',pid: 0,flag: true},
{id: 6,name: 'add',pid: 5,flag: false},
];
 
const transformedObject = transformArrayToObject(array);
console.log("没有子级不做处理,依旧是对象结构:", transformedObject)
//const adObj = adjustObj(transformedObject)
//console.log("对没有子级的做处理,不返回对象:", adObj)

 效果图:

 

 

posted on   Breeze_zhou  阅读(347)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示