數(shù)組整理為樹狀結(jié)構(gòu)

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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容