普通数组转成tree格式
const list = [
{ id: 1001, parentId: 0, name: 'AA' },
{ id: 1002, parentId: 1001, name: 'BB' },
{ id: 1003, parentId: 1001, name: 'CC' },
{ id: 1004, parentId: 1003, name: 'DD' },
{ id: 1005, parentId: 1003, name: 'EE' },
{ id: 1006, parentId: 1002, name: 'FF' },
{ id: 1007, parentId: 1002, name: 'GG' },
{ id: 1008, parentId: 1004, name: 'HH' },
{ id: 1009, parentId: 1005, name: 'II' },
]
function getTree(ary, parentId = 0) {
return ary.filter(v => v.parentId === parentId).map(v => {
const children = getTree(ary, v.id);
if (children.length) v.children = getTree(ary, v.id);
return v
});
}
console.log(getTree(list))
树形结构转成name属性拼接
const cityData = [
{
id: 'axzx',
name: '广东省',
children: [
{
id: 'sdsd',
name: '深圳市',
children: [
{ id: '45dss', name: '南山区' },
{
id: 'sdsd11',
name: '福田区',
children: [{ id: 'ddrr2', name: 'A街道' }],
},
],
},
{
id: '2323d',
name: '东莞市',
children: [
{ id: 'xxs2', name: 'A区' },
{ id: 'kklio2', name: 'B区' },
],
},
],
},
]
//
//递归
function getData(cityData) {
let nameArr = []
let dfs = function (arr, str = '', index = 1) {
if (index > arr.length) {
nameArr.push(str)
} else {
arr.forEach((item, i) => {
if (item.children) {
dfs(item.children, str + item.name, i++)
} else {
nameArr.push(str + item.name)
}
});
}
}
dfs(cityData)
return nameArr
}