let id = 5 const list = { id : 1, name: 'aa', sub: [ { id : 2, name: 'bb', sub: [ { id: 3, name: 'cc', sub: [ { id: 4, name: 'dd' }, { id: 5, name: 'ff' } ] } ] } ] }
- 求 当外层id与list中某个id相等时,求name在所在层的的下标,即现在name的下标应该是 1
已解决
悬赏分:30
- 解决时间 2022-01-05 07:34
点赞 0反对 0举报 0
收藏 0
分享 0
回答2
最佳
-
基础的树的遍历查找问题,即求符合要求节点在兄弟节点中的序号。
function find(node, id, index=0) { // 找到节点了 if(node.id === id) return index; // 子节点为空 if(!Array.isArray(node.sub)) return null; // 遍历子树 for(let i=0; i<node.sub.length; i++) { let result = find(node.sub[i], id, i); // 结果在子树中找到,返回结果 if(result !== null) return result; } // 子树里也没有 return null; } find(list, 5); // 1
支持 0 反对 0 举报2022-01-04 08:23
-
递归
function find(arr, id) { let f = -1; function _find(item, index) { index++; if (item.id === id) { f = index; } if (item.sub) { for (let i = 0; i < item.sub.length; i++) { _find(item.sub[i], index); } } } _find(arr, 0); return f; } console.log(find(list, 5));// 4
支持 0 反对 0 举报2022-01-04 09:03