// 得到的平级的数据
data: [{
id: "8510000",
pid: "0",
title: "四川省"
}, {
id: "8510000_1",
pid: "8510000",
title: "BSS域"
}, {
id: "291a15bcd7f2b6059163ccccbd112e17",
pid: "8510100_1",
title: "成都测试系统5"
}, {
id: "66158d49d8f9e64616be21edb87247fe",
pid: "8510100_1",
title: "成都——测试四——上级是四川测试系统一"
}, {
id: "8510000_4",
pid: "8510000",
title: "EDA域"
}, {
id: "8510100_1",
pid: "8510100",
title: "BSS域",
}, {
id: "8510100",
pid: "0",
title: "成都",
}];
// 数据格式转换的方法
listToMap: function (tempData) {
// 删除所有的children,以防止多次调用
tempData.forEach(function (item) {
delete item.children;
});
tempData.map(item => {
item.label = item.title;
item.value = item.id;
});
let map = {}; // 构建map
tempData.forEach(i => {
map[i.id] = i; // 构建以id为键 当前数据为值
});
let treeData = [];
tempData.forEach(child => {
const mapItem = map[child.pid]; // 判断当前数据的pid是否存在map中
if (mapItem) {
// 存在则表示当前数据不是最顶层的数据
// 注意: 这里的map中的数据是引用了tempData的它的指向还是arr,当mapItem改变时arr也会改变,踩坑点
(mapItem.children || (mapItem.children = [])).push(child); // 这里判断mapItem中是否存在child
} else {
// 不存在则是顶层数据
treeData.push(child);
}
});
return treeData;
};
// 调用方法
let treeArr = this.listToMap(data);
将平级数据转成树形数据
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。