Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.8k views
in Technique[技术] by (71.8m points)

急急急,前端处理后端返回数据,要求把数组转化为树形结构数据,求大佬解答。

// 原始数据转化前

const data = [{
    id: 'f',
    body: {
      next: ['a','b']
    }
},{
    id: 'a',
    body: {
      next: ['k']
    }
},{
    id: 'b',
    body: {
      next: []
    }
}]

// 数据转化后

const preData = [{
    id: 'f',
    children: [{
        id: 'a',
        children: [{
            id: 'k',
            children: []
        }]
    },{
        id: 'b',
        children: []
    }]
}]

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

image.png
递归代码不知道扔哪里了,写个简陋的吧。

data = [{
    id: 'f',
    body: {
      next: ['a','b']
    }
},{
    id: 'a',
    body: {
      next: ['k']
    }
},{
    id: 'b',
    body: {
      next: []
    }
}]
hash = data.reduce((s, n)=>{
    s[n.id] = n
    return s
}, {});
data.reduce((s, n)=>{
    s[n.id] = n;
    n.children = n.body.next.map(v=>hash[v] || {id: v, children: []})
    return s
}, {});
[hash.f]

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...