JS----前端将列表数据转树型数据

前端将列表数据转树型数据

场景:后端返回列表数据,由前端根据业务需求完成树型数据转换,

常用于侧边导航菜单,下拉树型数据项等

js 复制代码
export function listToTree(data: []) {
	var map: any = {},
		tree: any = []

	data.forEach((item: any) => {
		delete item?.children
		delete item?.params

		if (!item.label) {
			item.label = item?.name ?? item?.title
		}
		if (!item.value) {
			item.value = item?.id
		}

		map[item?.id] = item
	})

	/**
	 * 以原数据量循环拼装父,子级
	 */
	data.forEach((item: any) => {
		var parent = map[item?.pid]
		if (parent) {
			(parent.children || (parent.children = [])).push(item)
		} else {
			tree.push(item)
		}
	})

	return tree
}

如:菜单

相关推荐
CssHero2 分钟前
基于vue3完成领域模型架构建设
前端
PanZonghui6 分钟前
用项目说话:我的React博客构建成果与经验复盘
前端·react.js·typescript
挽淚8 分钟前
JavaScript 数组详解:从入门到精通
javascript
言兴9 分钟前
教你如何理解useContext加上useReducer
前端·javascript·面试
sunbyte12 分钟前
50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | GoodCheapFast(Good - Cheap - Fast三选二开关)
前端·javascript·css·vue.js·tailwindcss
前端的日常14 分钟前
网页视频录制新技巧,代码实现超简单!
前端
前端的日常15 分钟前
什么是 TypeScript 中的泛型?请给出一个使用泛型的示例。
前端
今禾16 分钟前
一行代码引发的血案:new Array(5) 到底发生了什么?
前端·javascript·算法
ccc101819 分钟前
老师问我localhost和127.0.0.1,有什么区别?
前端
南篱20 分钟前
JavaScript 中的 this 关键字:从迷惑到精通
javascript