前端JS一维数组转树状数组并获取当前节点的所有父级名称或id

 注意一维数组里面必须要有属性跟父级关联

	test(){
				const list2 = [
					{id: 1,pid: 0,name: '湖南'},
					{id: 2,pid: 1,name: '长沙'},
					{id: 3,pid: 2,name: '雨花区'},
				];
				// 参数一:需要转树状数组的数组
				// 参数二:父id
				// 参数三:当前递归的父级节点name
				// 参数三:当前递归的父级节点id
				const arrayToTree = (arr, pid, name,idChian) => {
				  return arr.reduce((res, item) => {
						console.log(res, 'res, item',item,'``````',pid)
				    if (item['pid'] === pid) {
							item.text = `${name}${name==''?'':'>'}${item.name}`//当前节点的所有父级节点名称
							item.idChian = `${idChian}${idChian ==''?'':','}${item.id}`//当前节点的所有父级节点id
				      item.children = arrayToTree(arr, item['id'],item.text,item.idChian);//递归调用
				      return res.concat(item);
				    }
				    return res;
				  }, []);
				};
				console.log(arrayToTree(list2, 0,'',''))
                return arrayToTree ;
			},

调用函数获取结果:

前端JS一维数组转树状数组并获取当前节点的所有父级名称或id_第1张图片

 可以看出每个节点的属性都多了一个text属性即为当前节点的所有父级节点链,

而idChian则为当前节点的所有父级节点id,如需当前节点顶级节点则直接取idChian的第一个字符即可

你可能感兴趣的:(javascript,前端)