const arr = [
{"name": "相城區(qū)", "code": 320507, "parentCode": 320500, "type": 2},
{"name": "遼寧省", "code": 210000, "parentCode": null, "type": 0},
{"name": "大興區(qū)", "code": 110115, "parentCode": 110100, "type": 2},
{"name": "北京市", "code": 110000, "parentCode": null, "type": 0},
{"name": "太倉市", "code": 320585, "parentCode": 320500, "type": 2},
{"name": "南京市", "code": 320100, "parentCode": 320000, "type": 1},
{"name": "中山區(qū)", "code": 210202, "parentCode": 210200, "type": 2},
{"name": "梁溪區(qū)", "code": 320213, "parentCode": 320200, "type": 2},
{"name": "溪湖區(qū)", "code": 210503, "parentCode": 210500, "type": 2},
{"name": "蘇州市", "code": 320500, "parentCode": 320000, "type": 1},
{"name": "姑蘇區(qū)", "code": 320508, "parentCode": 320500, "type": 2},
{"name": "濱湖區(qū)", "code": 320211, "parentCode": 320200, "type": 2},
{"name": "本溪市", "code": 210500, "parentCode": 210000, "type": 1},
{"name": "沙河口區(qū)", "code": 210204, "parentCode": 210200, "type": 2},
{"name": "六合區(qū)", "code": 320116, "parentCode": 320100, "type": 2},
{"name": "北京市", "code": 110100, "parentCode": 110000, "type": 1},
{"name": "大連市", "code": 210200, "parentCode": 210000, "type": 1},
{"name": "秦淮區(qū)", "code": 320104, "parentCode": 320100, "type": 2},
{"name": "玄武區(qū)", "code": 320102, "parentCode": 320100, "type": 2},
{"name": "吳中區(qū)", "code": 320506, "parentCode": 320500, "type": 2},
{"name": "浦口區(qū)", "code": 320111, "parentCode": 320100, "type": 2},
{"name": "長??h", "code": 210224, "parentCode": 210200, "type": 2},
{"name": "東城區(qū)", "code": 110101, "parentCode": 110100, "type": 2},
{"name": "江蘇省", "code": 320000, "parentCode": null, "type": 0},
{"name": "惠山區(qū)", "code": 320206, "parentCode": 320200, "type": 2},
{"name": "南芬區(qū)", "code": 210505, "parentCode": 210500, "type": 2},
{"name": "無錫市", "code": 320200, "parentCode": 320000, "type": 1},
{"name": "延慶區(qū)", "code": 110119, "parentCode": 110100, "type": 2}
];
const arrayToTreeing = (data = [], options) => {
if(Array.isArray(data)) {
if(!data.length) return data;
} else {
return [data]
}
const {
pAttr,
cAttr,
auxiliary: {
attr,
default: _default
}
} = {
pAttr: 'code',
cAttr: 'parentCode',
auxiliary: {
attr: 'type',
default: 2
},
sort: 0,
...options
};
let result = [],
itemMap = {};
for (let item of data) {
const pCode = item[pAttr] - 0,
cCode = item[cAttr] - 0,
children = item[attr] === _default ? null : [];
if(!itemMap[pCode]) {
itemMap[pCode] = {
children
}
}
itemMap[pCode] = {
...item,
children: itemMap[pCode]?.children
}
const threeMap = itemMap[pCode];
if(!cCode) {
result.push(threeMap);
} else {
if(!itemMap[cCode]) {
itemMap[cCode] = {
children: []
}
}
itemMap[cCode].children.push(threeMap);
}
}
return result;
}
console.log(arrayToTreeing(arr));

image.png