前端需求。
- 递归
- 深度优先遍历算法
// 查找一个节点的所有父节点 familyTree (arr1, id) { var temp = [] var forFn = function (arr, id) { for (var i = 0; i < arr.length; i++) { var item = arr[i] if (item.id === id) { temp.push(item) forFn(arr1, item.pid) break } else { if (item.children) { forFn(item.children, id) } } } } forFn(arr1, id) return temp }, // 查找一个树多有第一个节点,深度遍历 getFirstNode (tree) { var temp = [] var forFn = function (arr) { if (arr && arr.length > 0) { temp.push(arr[0]) if (arr[0].children) { forFn(arr[0].children) } } } forFn(tree) return temp }