javaScript 树形数据根据指定键名溯源

/*
 * 树型数据根据指定key溯源
 * @param {*} keys: 指定的对象key:键名
 * @param {*} lea## 标题fId : 溯源的唯一键值
 * @param {*} nodes : 树型数据
*/ 
function findPathByLeafId(keys,leafId, nodes, path) {
  if(path === undefined) {
    path = [];
  }
  for(var i = 0; i < nodes.length; i++) {
      var tmpPath = path.concat();
      tmpPath.push({
        ...nodes[i],
        children:[]
      });
      if(leafId == nodes[i][keys]) {
        return tmpPath;
      }
      if(nodes[i].children) {
        var findResult = findPathByLeafId(keys,leafId, nodes[i].children, tmpPath);
        if(findResult) {
          return findResult;
        }
      }
  }
}

const treeData = [{
	id:1,
	label:"a",
	children:[{
		id:12,
		label:"b",
		children:[{
			id:123,
			label:"c",
			children:[]
		}]
	}]
}]
let id = 123 
//调用方式:
let a = findPathByLeafId("id", id , treeData);
console.log('溯源后的数组====>>>',a) //返回一个数组就是溯源后的[父,父,父... 子]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值