查询树状图的值

这篇博客介绍了一种使用递归遍历嵌套对象数组,查找树状图中特定值的方法。通过定义一个闭包函数GetListItem,遍历每一层节点并检查children属性,实现了对树结构的深度搜索。最终返回包含所有name属性的数组。
摘要由CSDN通过智能技术生成

查询树状图某个值

前言:树状图的数据为层层嵌套的对象,如何在嵌套的对象中查询某个值是否存在呢?
下面这段代码就可以实现
function GetTree(list) { //定义公共方法,该方法接收一个要查询的数组对象。
	let arr = []; //定义一个空数组,用来存储筛选出来的数据
	function GetListItem(list) { //定义一个闭包,该闭包接收外层的数组对象
		list.forEach(item => { //在闭包内遍历数组对象,(解释:在闭包内遍历的原因是因为后面要递归遍历子数组)
		arr.push(item.name); //向定义的arr空数组内添加属性值为name的数据(这一块添加的是数组第一层数据)
		if (item.children) { //在闭包循环内判断是否存在children这个字段,如果存在则进入递归
			GetListItem(item.children) //递归遍历对象数组,该方法接收的参数是对象内部的对象(如果往下一直有则一直递归,直到没有下一层)
		}
	}
	GetListItem(list) //这里调用闭包方法,参数是外面方法的参数,必须一致
	return arr //如果递归结束后返回arr数组,(此时arr数组包含的数据是对象内所有name,包括所有子对象)
}
代码解释:上面这段代码使用了递归,首先定义一个闭包,第一轮循环接收的参数都是一样的,第一轮判断数组对象中是否存在children对象,如果存在的话则进入递归,参数为children对象,然后第二轮再次循环children对象,判断children里面是否还有children,如果有则进入递归继续,否则循环下一个,依次类推,直到将对象全部循环完毕之后返回数据。
调用GetTree(arr),然后输出可以查看结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值