SOURCE

let arr = [
    {
        "cityNo": "1516588857",
        "branchNo": "69174749",
        "gridNo": "66614",
        "cityName": "北区",
        "branchName": "郑州",
        "gridName": "郑州中原"
    },
    {
        "cityNo": "1516588857",
        "branchNo": "69174749",
        "gridNo": "66613",
        "cityName": "北区",
        "branchName": "郑州",
        "gridName": "郑州CBD"
    },
    {
        "cityNo": "1516588856",
        "branchNo": "69174690",
        "gridNo": "66340",
        "cityName": "南区",
        "branchName": "武汉",
        "gridName": "武汉楚河汉街"
    },
    {
        "cityNo": "1516588857",
        "branchNo": "69174648",
        "gridNo": "66904",
        "cityName": "北区",
        "branchName": "沈阳",
        "gridName": "沈阳铁西"
    },
    {
        "cityNo": "1516588857",
        "branchNo": "69174684",
        "gridNo": "66194",
        "cityName": "北区",
        "branchName": "北京",
        "gridName": "北京CBD"
    },
    {
        "cityNo": "1516588858",
        "branchNo": "69174687",
        "gridNo": "66274",
        "cityName": "东区",
        "branchName": "上海",
        "gridName": "上海五角场"
    },
]
var newArr = []
for (var i = 0; i < arr.length; i++) {
    if (arr[i].cityName == '北区') {
        newArr[0] = { value: '北区', id: arr[i].cityNo }
    } else if (arr[i].cityName == '东区') {
        newArr[1] = { value: '东区', id: arr[i].cityNo }
    } else if (arr[i].cityName == '西区') {
        newArr[2] = { value: '西区', id: arr[i].cityNo }
    } else if (arr[i].cityName == '南区') {
        newArr[3] = { value: '南区', id: arr[i].cityNo }
    }
}
function trimSpace(array) {
    for (var i = 0; i < array.length; i++) {
        if (array[i] == " " || array[i] == null || typeof (array[i]) == "undefined") {
            array.splice(i, 1);
            i = i - 1;
        }
    }
    return array;
}
let spArr = trimSpace(newArr)
for (var a = 0; a < spArr.length; a++) {
    spArr[a].childs = []
}
spArr.unshift({ id: "-1", value: "全部", childs: [] })
for (var i = 0; i < arr.length; i++) {
    for (var k = 0; k < spArr.length; k++) {
        if (arr[i].cityName == spArr[k].value) {
            spArr[k].childs[0] = { value: '全部', id: '-1' }
            spArr[k].childs.push({ value: arr[i].branchName, id: arr[i].branchNo })
            let map = new Map();
            for (let item of spArr[k].childs) {
                if (!map.has(item.id)) {
                    map.set(item.id, item);
                };
            };
            spArr[k].childs = [...map.values()];
        }
    }
}

for (var i = 0; i < arr.length; i++) {
    for (var l = 0; l < spArr.length; l++) {
        for (var p = 0; p < spArr[l].childs.length; p++) {
            spArr[l].childs[p].childs = []
        }
    }
}
for (var i = 0; i < arr.length; i++) {
    for (var l = 0; l < spArr.length; l++) {
        for (var p = 0; p < spArr[l].childs.length; p++) {
            spArr[l].childs[p].childs[0] = { value: '全部', id: '-1' }
            // console.log(spArr[l].childs[p]);
            if (arr[i].branchName == spArr[l].childs[p].value) {
                // console.log(spArr[l].childs[p].value);
                spArr[l].childs[p].childs.push({ value: arr[i].gridName, id: arr[i].gridNo })
                // console.log();
            }
        }
    }
}
console.log(spArr);
console 命令行工具 X clear

                    
>
console