处理eleemnt ui tree组件数据

根据element ui tree组件选项id,获取其祖籍路径

例如 treeArr 数组:

id: 为 1-1-1,一级一级往上找,其祖籍路径为: 1-1 => 1
id: 为 1-2-2,一级一级往上找,其祖籍路径为: 1-2 => 1
id: 为 1-3-4-3,一级一级往上找 ,其祖籍路径为:1-3-4 => 1-3 => 1

const treeArr= [
	{
		id: "1",
		children:[
			{
				id: "1-1",
				children:[
					{id: "1-1-1"},
					{id: "1-1-2"},
					{id: "1-1-3"},
				]
			},
			{
				id: "1-2",
				children:[
					{id: "1-2-1"},
					{id: "1-2-2"},
					{id: "1-2-3"},
				]
			},
			{
				id: "1-3",
				children:[
					{id: "1-3-1"},
					{id: "1-3-2"},
					{id: "1-3-3"},
					{
						id: "1-3-4",
						children:[
							{id: "1-3-4-1"},
							{id: "1-3-4-2"},
							{id: "1-3-4-3"},
						]
					}
				]
			}
		]
	}
];
function treeFilterIds(treeArr, treeIdArr, parentIds = [], ids = [], level = 0) {
      level++;
      for (let i = 0, len = treeArr.length; i < len; i++) {
        if ("children" in treeArr[i] && treeArr[i].children.length > 0) {
          parentIds.push(treeArr[i].id);
          treeFilterIds(
            treeArr[i].children, // tree 数据数组
            treeIdArr, // 选中选项id数组
            parentIds, // 递归存储父级id的数组
            ids, // 最终返回的数组id
            level // 层级 1为第一层
          );
          parentIds = parentIds.slice(0, level - 1); // 递归完后根据层级初始化parentIds,level -1 是因为
        } else {
          if (treeIdArr.includes(treeArr[i].id)) {
            parentIds.push(treeArr[i].id);
            ids.push(parentIds.join("/"));
            parentIds = parentIds.slice(0, parentIds.length - 1);
          }
        }
      }
      return ids;
}
let ids = treeFilterIds(treeArr,["1-3-3-1","1-1-1"]);
console.log(ids); // => ["1/1-1/1-1-1","1/1-3/1-3-3-1/1-3-3-1"]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值