js树状数据结构,查询上一层 某个字段

怎么根据当前id查找父级对象比如南京id:101,找到江苏这个对象,谢谢各位老哥

 [
    {   
        id:1,
        pid:0
        nama:'中国',
        children:[
            {
                id:5,
                pid:1
                nama:'江苏',
                children:[
                    {
                        id:101,
                        pid:5
                        nama:'南京',
                    }
                ]
            }
        ]
    }
]
阅读 2.2k
2 个回答

const findParent = (data, id) => {
  const helper = (node, origin) => {
    if (node.id === id) return origin === dummyRoot ? null : origin;

    const children = node.children ?? [];

    for (const neighbor of children) {
      const ans = helper(neighbor, node);

      if (ans) return ans;
    }

    return null;
  };

  const dummyRoot = { children: data };
  return helper(dummyRoot, null);
};

console.log(findParent(data, 101));
console.log(findParent(data, 5));
console.log(findParent(data, 1));
console.log(findParent(data, 7));

可以获取目标id的父级树上所有的id:


getIds(data, 101);

function getIds(data, id) {
  let tArr = [];

  loop(data);

  return tArr;

  function loop(arr) {
    return arr.some((n) => {
      if (n.id === id) {
        tArr.push(n.id);
        return true;
      }

      const child = n.children || [];
      if (child && child.length > 0) {
        tArr.push(n.id);
        if (loop(child)) return true;
        tArr.unshift();
      }

      return false;
    }, [])
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题