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>
下面是输出在控制台的结果:
以上就是我能想到的最简单的解题思路,如果你有更好的思路欢迎留言,谢谢!