data:[{"id":1675755921416,"pid":1675755866738,"uid":1,"username":"zhangsan","comment":"新年好"},{"id":1675755895321,"pid":1675755866738,"uid":2,"username":"lisi","comment":"大家都好"},{"id":1675755880977,"pid":0,"uid":2,"username":"lisi","comment":"李四动态"},{"id":1675755866738,"pid":1675755806728,"uid":3,"username":"wangwu","comment":"张总好呀"},{"id":1675755849801,"pid":1675755806728,"uid":2,"username":"lisi","comment":"你好"},{"id":1675755806728,"pid":0,"uid":1,"username":"zhangsan","comment":"张三发表动态"}]
列表结构转树形结构:
formatTree(data) {
const result = [];
const map = {};
data.forEach((item) => {
map[item.id] = item;
});
data.forEach((item) => {
const parent = map[item.pid];
if (parent) {
(parent.children || (parent.children = [])).unshift(item);
} else {
result.unshift(item);
}
});
return result;
}
思路:
1、先把数组转列表结构,根据id来存每一项
map:{id1:item, id2:item}
2、循环data数组 ,根据item的pid去读取map的值即:map[item.pid], 存在说明有父级,把该item放到map[tem.pid].children,不存在,放到result,最后返回