js 编写递归方法,当查找到指定节点后:
1. 递归并不会停止,直到所有节点遍历结束之后,才会停止,会有性能损耗。
2. 递归成功后,如何返回查找到的值?
代码如下:
/**
* @description: 树节点查到指定id
* @param {Number} findId 要查找的id
* @param {Array} array 遍历的数组
* @param {String} findKey 要对比的key
* @returns:
*/
var findTreeId = (findId, array, findKey='id') => {
for (let index = 0; index < ; index++) {
const element = array[index];
if (element[findKey] == findId) {
return element;
} else if () {
let result = findTreeId(findId, , findKey='id')
// 这个判断很重要,在没有返回值的情况下才进行递归
if (result) {
return result;
}
}
}
return null;
};
数据如下:
var treedata = [
{
id: 1,
name: 123,
pid: 0,
children: [
{
id: 2,
name: 223,
pid: 1,
children: [
{ id: 31, name: 311, pid: 2, children: [] },
{ id: 32, name: 322, pid: 2, children: [] }
]
},
{
id: 3,
name: 22222,
pid: 1,
children: [{ id: 41, name: 223232, pid: 3, children: [] }]
}
]
},
{
id: 5,
name: 55,
pid: 0,
children: [
{
id: 51,
name: 5111,
pid: 5,
children: [
{ id: 511, name: 123, pid: 51, children: [] },
{ id: 512, name: 31222, pid: 51, children: [] }
]
}
]
}
];
运行:('findTreeId',findTreeId(511,treedata));
结果即返回查找的节点,并且查到后,不再继续遍历