//笔试考试题目:涉及知识点:递归遍历树,查找符合条件的子属性,(答案在文章结尾处)
问题如下:
const tcData = [
{
id: '1000',
name: '深圳',
children: [
{
id: '1001',
name: '宝安',
children: []
},
{
id: '1002',
name: '南山',
children: [
{
id: '1012',
name: '粤海街道',
children: [
{
id: '1112',
name: '阿里中心',
children: []
},
{
id: '1212',
name: '深圳湾人才公园',
children: []
}
]
}
]
}
]
},
{
id: '2000',
name: '广州',
children: [
{
id: '2001',
name: '越秀区',
children: [
{
id: '2011',
name: '人民公园'
}
]
},
{
id: '2002',
name: '天河区',
children: []
}
]
}
];
//请实现find函数
function find(data, id) {
}
console.log(find(tcData, '1000')); // => '深圳'
console.log(find(tcData, '2001')); // => '越秀区'
console.log(find(tcData, '1012')); // => '粤海街道'
console.log(find(tcData, '1112')); // => '阿里中心'
console.log(find(tcData, '1222')); // => '未找到'
//答案:
function find(data, id) {
let res = '未找到'
function walk(data,id) {
for(var i = 0; i< data.length; i++) {
const it = data[i]
if(it.id === id) {
res = it.name
break
} else if (it.children && it.children.length > 0) {
walk(it.children, id)
}
}
}
walk(data,id)
return res
}