js递归获取对象所有指定属性值及对应层级(面试题)

js递归获取对象所有指定属性值及对应层级(面试题)

之前面试遇到了一道递归题,因为当时紧张时间有限制,所以写的乱七八糟,今天做了一下分享给大家

描述:本题给了一个对象,要求以 递归 的形式拿到对象内所有 href 属性 以及 对应层级

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>ua</title>
</head>
<body>

<script type="text/javascript">

// 这是面试官给出的object
var data = [
	{
		"resName": "ETC管理",
		"powerCode": 2060001,
		"href": "1"
	},
	{
		"resName": "保险",
		"child": [
			{
				"resName": "放空险管理",
				"powerCode": 2060002,
				"href": "2"
			},
			{
				"resName": "放空险管理",
				"powerCode": 2060002,
				"child": [
					{
						"resName": "放空险管理",
						"powerCode": 206000,
						"href": "3"
					},
					{
						"resName": "放空险管理",
						"powerCode": 2060002,
						"href": "4"
					},
					{
						"resName": "放空险管理",       
						"powerCode": 2060002,
						"href":"5"
					}
				]
			},
			{
				"resName": "放空险管理",
				"powerCode": 2060002,
				"href": "7"
			}
		]
	},
	{
		"powerCode": 2060003,
		"resName": "广告管理",
		"href": "8"
	}
];

// ---------------------解题代码start------------------------

 var num = 1
 function gethref(dt,n) {
	 dt.forEach((ev)=>{
		 if(ev.href) {
			 // 在这里打印出结果
			 console.log('href值: ' + ev.href, ',href所在层级: ' + (n || 1))
		 } else {
			 gethref(ev.child,++num)
		 }
		 
	 })
	 
 }

gethref(data)

// ---------------------解题代码end------------------------
</script>

</body>
</html>

下面是输出在控制台的结果:

在这里插入图片描述

以上就是我能想到的最简单的解题思路,如果你有更好的思路欢迎留言,谢谢!

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值