iView级联选择器回显问题(根据子节点id递归获取所有父类id的数组)

根据子节点递归获取所有父类id的数组

JSON数据(这里直接使用iview级联选择器里面的示例数据)

let nodes = [{
				value: 'beijing',
				label: '北京',
				children: [{
						value: 'gugong',
						label: '故宫'
					},
					{
						value: 'tiantan',
						label: '天坛'
					},
					{
						value: 'wangfujing',
						label: '王府井'
					}
				]
			}, {
				value: 'jiangsu',
				label: '江苏',
				children: [{
						value: 'nanjing',
						label: '南京',
						children: [{
							value: 'fuzimiao',
							label: '夫子庙',
						}]
					},
					{
						value: 'suzhou',
						label: '苏州',
						children: [{
								value: 'zhuozhengyuan',
								label: '拙政园',
							},
							{
								value: 'shizilin',
								label: '狮子林',
							}
						]
					}
				],
			}]

JS代码

// 根据子节点id递归获取所有父类的id
			let code = 'shizilin'   //子节点id    狮子林
			function treeFindPath (tree, func, path = []) {
			  if (!tree) return []
			  for (const data of tree) {
			    path.push(data.value)
			    if (func(data)) return path
			    if (data.children) {
			      const findChildren = treeFindPath(data.children, func, path)
			      if (findChildren.length) return findChildren
			    }
			    path.pop()
			  }
			  return []
			}
			//将递归获取到的数组赋值给result
			let result = treeFindPath(nodes, node => node.value === code)
			console.log(result,'result')

输出结果

["jiangsu","suzhou","shizilin"]    //result    江苏  苏州  狮子林
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值