通过接口向前端返回了天猫的行业信息,将其转换为树状格式-无限嵌套

设后端通过接口返回了天猫的行业信息

let industry_list = [{
		name: '女装'
	},
	{
		parent_ind: '女装',
		name: '连衣裙'
	},
	{
		parent_ind: '女装',
		name: '半身群'
	},
	{
		parent_ind: '女装',
		name: 'A字群'
	},
	{
		name: '数码'
	},
	{
		parent_ind: '数码',
		name: '电脑配件'
	},
	{
		parent_ind: '电脑配件',
		name: '内存'
	}
];

可以将其转换为树状格式

{
	'女装':{
		'连衣裙':{},
		'半身群':{},
		'A字群':{},
	},
	'数码':{
		'电脑配件':{
			'内存':{},
		},
	},
}

实现方法完成转换

function convert_format(data) {
	//  取第一级
	const tempRootList = data.filter((val) => !val.hasOwnProperty('parent_ind'))
	// 取子级
	const tempChildList = data.filter((val) => val.hasOwnProperty('parent_ind'))
	const finalMap = {}
	// 初始化
	for (let item of tempRootList) {
		finalMap[item.name] = {}
	}
	// 递归父级查找与父级Key相等的子集
	function findParent(parentMap, childMap) {
		for (let item of Object.keys(parentMap)) {
			if (item === childMap.parent_ind) {
				let tempName = childMap.name
				parentMap[item][tempName] = {}
				return
			}
		}
		for (let item of Object.values(parentMap)) {
			findParent(item, childMap)
		}

	}
	// 遍历子集插入父级
	for (let item of tempChildList) {
		findParent(finalMap, item)
	}

	return finalMap
}

console.log(convert_format(industry_list));

 

posted @   JackieDYH  阅读(4)  评论(0编辑  收藏  举报  
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示