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

发布于 2022-09-13 00:19:26 字数 451 浏览 12 评论 0

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

 [
    {   
        id:1,
        pid:0
        nama:'中国',
        children:[
            {
                id:5,
                pid:1
                nama:'江苏',
                children:[
                    {
                        id:101,
                        pid:5
                        nama:'南京',
                    }
                ]
            }
        ]
    }
]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

终止放荡 2022-09-20 00:19:26

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));
时光倒影 2022-09-20 00:19:26

可以获取目标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;
    }, [])
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文