js获取树行列表某个节点的父节点?

const arr = [
  {
    id: 1,
    date: "2016-05-02",
    name: "王小虎",
    address: "上海市普陀区金沙江路 1518 弄"
  },
  {
    id: 2,
    date: "2016-05-04",
    name: "王小虎",
    address: "上海市普陀区金沙江路 1517 弄"
  },
  {
    id: 3,
    date: "2016-05-01",
    name: "王小虎",
    address: "上海市普陀区金沙江路 1519 弄",
    children: [
      {
        id: 31,
        date: "2016-05-01",
        name: "王小虎",
        address: "上海市普陀区金沙江路 1519 弄",
        children: [
          {
            id: 311,
            date: "2016-05-01",
            name: "王小虎",
            address: "上海市普陀区金沙江路 1519 弄",
          }
        ]
      },
      {
        id: 32,
        date: "2016-05-01",
        name: "王小虎",
        address: "上海市普陀区金沙江路 1519 弄"
      }
    ]
  },
  {
    id: 4,
    date: "2016-05-03",
    name: "王小虎",
    address: "上海市普陀区金沙江路 1516 弄"
  }];

上面的数组 id=311的父节点是 id=31,id=2的父节点为null;
请问应该怎么解决?

阅读 432
1 个回答
function findParentNode(list, cb, parent = null) {
  for(const node of list) {
    if(cb(node)) return parent;
    const res = findParentNode(node.children || [], cb, node);
    if(res) return res;
  }
  return null
}

findParentNode(arr, v => v.id === 2) // null
findParentNode(arr, v => v.id === 311) // {id: 31 ...}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题