互换扁平树形数据
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
let arr = [
{
precinctId: "370300",
precinctName: "淄博市应急局",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "0",
precinctKind: 100,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300001",
precinctName: "局机关",
precinctAddr: "淄博市应急局",
regionName: "淄博市",
upPrecinctId: "370300",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300001001",
precinctName: "局领导",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300002002",
precinctName: "支队领导",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300002",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300003005",
precinctName: "中心领导",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300003",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "380300",
createUser: null,
},
{
precinctId: "370300002",
precinctName: "综合行政执法支队",
precinctAddr: "淄博市应急局",
regionName: "淄博市",
upPrecinctId: "370300",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300001005",
precinctName: "办公室",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300002001",
precinctName: "综合执行室",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300002",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300003006",
precinctName: "总调度室",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300003",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "380300",
createUser: null,
},
{
precinctId: "370300003",
precinctName: "指挥中心",
precinctAddr: "应急管理局",
regionName: "淄博市",
upPrecinctId: "370300",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300001018",
precinctName: "组织人事科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300002005",
precinctName: "监督审理室",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300002",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300003002",
precinctName: "救援科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300003",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "380300",
createUser: null,
},
{
precinctId: "370300001009",
precinctName: "规划财务科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300002004",
precinctName: "举报受理室",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300002",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300003003",
precinctName: "装备科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300003",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "380300",
createUser: null,
},
{
precinctId: "370300001003",
precinctName: "\r\n安全生产综合协调科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300002006",
precinctName: "监察一室",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300002",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300003004",
precinctName: "技术科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300003",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "380300",
createUser: null,
},
{
precinctId: "370300001019",
precinctName: "安全生产巡查督查科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300002007",
precinctName: "监察二室",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300002",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300003001",
precinctName: "监测科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300003",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "380300",
createUser: null,
},
{
precinctId: "370300001002",
precinctName: "危险化学品安全监督管理科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300002008",
precinctName: "监察三室",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300002",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300001004",
precinctName: "安全生产基础科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300002009",
precinctName: "监察四室",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300002",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300001006",
precinctName: "行政许可科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300002010",
precinctName: "监察五室",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300002",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300001015",
precinctName: "科技和信息化科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300002011",
precinctName: "监察六室",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300002",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300001010",
precinctName: "救援协调和预案管理科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300002012",
precinctName: "监察七室",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300002",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300001008",
precinctName: "风险监测和综合减灾科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300001013",
precinctName: "火灾防治管理科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300002003",
precinctName: "外派",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300002",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300001012",
precinctName: "防汛抗旱科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300001011",
precinctName: "地震和地质灾害救援科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300001014",
precinctName: "救灾和物资保障科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300001016",
precinctName: "调查评估和统计科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300001021",
precinctName: "政策法规科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300001017",
precinctName: "新闻宣传科",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300001020",
precinctName: "机关党委",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
{
precinctId: "370300001007",
precinctName: "驻村",
precinctAddr: null,
regionName: "淄博市",
upPrecinctId: "370300001",
precinctKind: 101,
gpsType: null,
gpsx: null,
gpsy: null,
gpsz: null,
regionXy: null,
areaCode: "370300",
createUser: null,
},
];
function formatTree(obj) {
let copyedObj = JSON.parse(JSON.stringify(obj)) // 深拷贝源数据
return copyedObj.filter(parent => {
let findChildren = copyedObj.filter(child => {
return parent.precinctId === child.upPrecinctId
})
findChildren.length > 0
? (parent.children = findChildren)
: (parent.children = [])
return parent.upPrecinctId === '0' // 返回顶层,依据实际情况判断这里的返回值
})
}
let newArr = formatTree(arr)
console.log(newArr);
let newarr = []
function newList(arr) {
arr.forEach(item => {
newarr.push(item)
item.children && item.children.length > 0 ? newList(item.children) : ""
})
return newarr
}
console.log(newList(newArr));
</script>
</body>
</html>