將一個簡單的路徑數組轉換成合乎ztree顯示要求的數據結構

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="http://10.10.1.132/static/libs/ztree/css/metroStyle/metroStyle_adm.css"
        type="text/css">
    <script src="http://10.10.1.132/static/libs/jquery/jquery-1.11.2.min.js"></script>
    <script src="http://10.10.1.132/static/libs/ztree/js/jquery.ztree.core-3.5.js"></script>
    <script src="http://10.10.1.132/static/libs/ztree/js/jquery.ztree.exedit.js"></script>
    <script src="http://10.10.1.132/static/libs/ztree/js/jquery.ztree.excheck-3.5.js"></script>
    <script src="http://10.10.1.132/static/libs/ztree/js/jquery.ztree.exhide-3.5.js"></script>
    <title>Document</title>
</head>

<body>
    <ul id="org-tree" class="ztree"></ul>
</body>
<script>
    let arr = {
        "status": 0,
        "msg": "獲取光盤目錄成功",
        "dirs": [
            "/media/CDROM/",
            "/media/CDROM/boot",
            "/media/CDROM/boot/fonts",
            "/media/CDROM/boot/zh-cn",
            "/media/CDROM/efi",
            "/media/CDROM/efi/microsoft",
            "/media/CDROM/efi/microsoft/boot",
            "/media/CDROM/efi/microsoft/boot/fonts",
            "/media/CDROM/sources",
            "/media/CDROM/sources/dlmanifests",
            "/media/CDROM/sources/dlmanifests/bitsextensions-server",
            "/media/CDROM/sources/dlmanifests/microsoft-activedirectory-webservices-dl",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-adfs-dl",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-bluetooth-config",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-com-complus-setup-dl",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-com-dtc-setup-dl",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-dhcpservermigplugin-dl",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-directoryservices-adam-dl",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-iasserver-migplugin",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-iasserver-migplugin/zh-cn",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-ie-clientnetworkprotocolimplementation",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-iis-dl",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-international-core-dl",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-internet-naming-service-runtime",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-mediaplayer",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-mediaplayer-drm-dl",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-msmq-messagingcoreservice",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-ndis",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-networkbridge",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-networkloadbalancing-core",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-offlinefiles-dl",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-performancecounterinfrastructure-dl",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-performancecounterinfrastructureconsumer-dl",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-rasconnectionmanager",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-rasserver-migplugin",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-shmig-dl",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-storagemigration",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-storagemigration/zh-cn",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-sxs",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-tapisetup",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-terminalservices-licenseserver",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-textservicesframework-migration-dl",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-unimodem-config",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-winsock-core-infrastructure-upgrade",
            "/media/CDROM/sources/dlmanifests/microsoft-windows-wmi-core",
            "/media/CDROM/sources/dlmanifests/networking-mpssvc-svc",
            "/media/CDROM/sources/dlmanifests/zh-cn",
            "/media/CDROM/sources/etwproviders",
            "/media/CDROM/sources/etwproviders/zh-cn",
            "/media/CDROM/sources/inf",
            "/media/CDROM/sources/license",
            "/media/CDROM/sources/license/_default",
            "/media/CDROM/sources/license/_default/_default",
            "/media/CDROM/sources/license/_default/_default/enterprise",
            "/media/CDROM/sources/license/_default/_default/enterprisee",
            "/media/CDROM/sources/license/_default/_default/enterprisen",
            "/media/CDROM/sources/license/_default/_default/homebasic",
            "/media/CDROM/sources/license/_default/_default/homebasice",
            "/media/CDROM/sources/license/_default/_default/homebasicn",
            "/media/CDROM/sources/license/_default/_default/homepremium",
            "/media/CDROM/sources/license/_default/_default/homepremiume",
            "/media/CDROM/sources/license/_default/_default/homepremiumn",
            "/media/CDROM/sources/license/_default/_default/professional",
            "/media/CDROM/sources/license/_default/_default/professionale",
            "/media/CDROM/sources/license/_default/_default/professionaln",
            "/media/CDROM/sources/license/_default/_default/starter",
            "/media/CDROM/sources/license/_default/_default/startere",
            "/media/CDROM/sources/license/_default/_default/startern",
            "/media/CDROM/sources/license/_default/_default/ultimate",
            "/media/CDROM/sources/license/_default/_default/ultimatee",
            "/media/CDROM/sources/license/_default/_default/ultimaten",
            "/media/CDROM/sources/license/_default/eval",
            "/media/CDROM/sources/license/_default/eval/enterprise",
            "/media/CDROM/sources/license/_default/eval/enterprisee",
            "/media/CDROM/sources/license/_default/eval/enterprisen",
            "/media/CDROM/sources/license/_default/eval/homebasic",
            "/media/CDROM/sources/license/_default/eval/homebasice",
            "/media/CDROM/sources/license/_default/eval/homebasicn",
            "/media/CDROM/sources/license/_default/eval/homepremium",
            "/media/CDROM/sources/license/_default/eval/homepremiume",
            "/media/CDROM/sources/license/_default/eval/homepremiumn",
            "/media/CDROM/sources/license/_default/eval/professional",
            "/media/CDROM/sources/license/_default/eval/professionale",
            "/media/CDROM/sources/license/_default/eval/professionaln",
            "/media/CDROM/sources/license/_default/eval/starter",
            "/media/CDROM/sources/license/_default/eval/startere",
            "/media/CDROM/sources/license/_default/eval/startern",
            "/media/CDROM/sources/license/_default/eval/ultimate",
            "/media/CDROM/sources/license/_default/eval/ultimatee",
            "/media/CDROM/sources/license/_default/eval/ultimaten",
            "/media/CDROM/sources/license/_default/oem",
            "/media/CDROM/sources/license/_default/oem/enterprise",
            "/media/CDROM/sources/license/_default/oem/enterprisee",
            "/media/CDROM/sources/license/_default/oem/enterprisen",
            "/media/CDROM/sources/license/_default/oem/homebasic",
            "/media/CDROM/sources/license/_default/oem/homebasice",
            "/media/CDROM/sources/license/_default/oem/homebasicn",
            "/media/CDROM/sources/license/_default/oem/homepremium",
            "/media/CDROM/sources/license/_default/oem/homepremiume",
            "/media/CDROM/sources/license/_default/oem/homepremiumn",
            "/media/CDROM/sources/license/_default/oem/professional",
            "/media/CDROM/sources/license/_default/oem/professionale",
            "/media/CDROM/sources/license/_default/oem/professionaln",
            "/media/CDROM/sources/license/_default/oem/starter",
            "/media/CDROM/sources/license/_default/oem/startere",
            "/media/CDROM/sources/license/_default/oem/startern",
            "/media/CDROM/sources/license/_default/oem/ultimate",
            "/media/CDROM/sources/license/_default/oem/ultimatee",
            "/media/CDROM/sources/license/_default/oem/ultimaten",
            "/media/CDROM/sources/license/zh-cn",
            "/media/CDROM/sources/license/zh-cn/_default",
            "/media/CDROM/sources/license/zh-cn/_default/enterprise",
            "/media/CDROM/sources/license/zh-cn/_default/enterprisee",
            "/media/CDROM/sources/license/zh-cn/_default/enterprisen",
            "/media/CDROM/sources/license/zh-cn/_default/homebasic",
            "/media/CDROM/sources/license/zh-cn/_default/homebasice",
            "/media/CDROM/sources/license/zh-cn/_default/homebasicn",
            "/media/CDROM/sources/license/zh-cn/_default/homepremium",
            "/media/CDROM/sources/license/zh-cn/_default/homepremiume",
            "/media/CDROM/sources/license/zh-cn/_default/homepremiumn",
            "/media/CDROM/sources/license/zh-cn/_default/professional",
            "/media/CDROM/sources/license/zh-cn/_default/professionale",
            "/media/CDROM/sources/license/zh-cn/_default/professionaln",
            "/media/CDROM/sources/license/zh-cn/_default/starter",
            "/media/CDROM/sources/license/zh-cn/_default/startere",
            "/media/CDROM/sources/license/zh-cn/_default/startern",
            "/media/CDROM/sources/license/zh-cn/_default/ultimate",
            "/media/CDROM/sources/license/zh-cn/_default/ultimatee",
            "/media/CDROM/sources/license/zh-cn/_default/ultimaten",
            "/media/CDROM/sources/license/zh-cn/eval",
            "/media/CDROM/sources/license/zh-cn/eval/enterprise",
            "/media/CDROM/sources/license/zh-cn/eval/enterprisee",
            "/media/CDROM/sources/license/zh-cn/eval/enterprisen",
            "/media/CDROM/sources/license/zh-cn/eval/homebasic",
            "/media/CDROM/sources/license/zh-cn/eval/homebasice",
            "/media/CDROM/sources/license/zh-cn/eval/homebasicn",
            "/media/CDROM/sources/license/zh-cn/eval/homepremium",
            "/media/CDROM/sources/license/zh-cn/eval/homepremiume",
            "/media/CDROM/sources/license/zh-cn/eval/homepremiumn",
            "/media/CDROM/sources/license/zh-cn/eval/professional",
            "/media/CDROM/sources/license/zh-cn/eval/professionale",
            "/media/CDROM/sources/license/zh-cn/eval/professionaln",
            "/media/CDROM/sources/license/zh-cn/eval/starter",
            "/media/CDROM/sources/license/zh-cn/eval/startere",
            "/media/CDROM/sources/license/zh-cn/eval/startern",
            "/media/CDROM/sources/license/zh-cn/eval/ultimate",
            "/media/CDROM/sources/license/zh-cn/eval/ultimatee",
            "/media/CDROM/sources/license/zh-cn/eval/ultimaten",
            "/media/CDROM/sources/license/zh-cn/oem",
            "/media/CDROM/sources/license/zh-cn/oem/enterprise",
            "/media/CDROM/sources/license/zh-cn/oem/enterprisee",
            "/media/CDROM/sources/license/zh-cn/oem/enterprisen",
            "/media/CDROM/sources/license/zh-cn/oem/homebasic",
            "/media/CDROM/sources/license/zh-cn/oem/homebasice",
            "/media/CDROM/sources/license/zh-cn/oem/homebasicn",
            "/media/CDROM/sources/license/zh-cn/oem/homepremium",
            "/media/CDROM/sources/license/zh-cn/oem/homepremiume",
            "/media/CDROM/sources/license/zh-cn/oem/homepremiumn",
            "/media/CDROM/sources/license/zh-cn/oem/professional",
            "/media/CDROM/sources/license/zh-cn/oem/professionale",
            "/media/CDROM/sources/license/zh-cn/oem/professionaln",
            "/media/CDROM/sources/license/zh-cn/oem/starter",
            "/media/CDROM/sources/license/zh-cn/oem/startere",
            "/media/CDROM/sources/license/zh-cn/oem/startern",
            "/media/CDROM/sources/license/zh-cn/oem/ultimate",
            "/media/CDROM/sources/license/zh-cn/oem/ultimatee",
            "/media/CDROM/sources/license/zh-cn/oem/ultimaten",
            "/media/CDROM/sources/replacementmanifests",
            "/media/CDROM/sources/replacementmanifests/microsoft-activedirectory-webservices",
            "/media/CDROM/sources/replacementmanifests/microsoft-international-core",
            "/media/CDROM/sources/replacementmanifests/microsoft-windows-audio-mmecore-other",
            "/media/CDROM/sources/replacementmanifests/microsoft-windows-bth-user",
            "/media/CDROM/sources/replacementmanifests/microsoft-windows-gameuxmig",
            "/media/CDROM/sources/replacementmanifests/microsoft-windows-iis-rm",
            "/media/CDROM/sources/replacementmanifests/microsoft-windows-ndis",
            "/media/CDROM/sources/replacementmanifests/microsoft-windows-offlinefiles-core",
            "/media/CDROM/sources/replacementmanifests/microsoft-windows-offlinefiles-core/zh-cn",
            "/media/CDROM/sources/replacementmanifests/microsoft-windows-power-policy",
            "/media/CDROM/sources/replacementmanifests/microsoft-windows-shmig",
            "/media/CDROM/sources/replacementmanifests/microsoft-windows-terminalservices-appserver-licensing",
            "/media/CDROM/sources/replacementmanifests/microsoft-windows-terminalservices-licenseserver",
            "/media/CDROM/sources/replacementmanifests/usb",
            "/media/CDROM/sources/replacementmanifests/windowssearchengine",
            "/media/CDROM/sources/replacementmanifests/zh-cn",
            "/media/CDROM/sources/servicing",
            "/media/CDROM/sources/servicing/0.0.0.1",
            "/media/CDROM/sources/servicingstackmisc",
            "/media/CDROM/sources/zh-cn",
            "/media/CDROM/support",
            "/media/CDROM/support/logging",
            "/media/CDROM/support/logging/zh-cn",
            "/media/CDROM/support/migwiz",
            "/media/CDROM/support/migwiz/cable",
            "/media/CDROM/support/migwiz/postmigres",
            "/media/CDROM/support/migwiz/postmigres/data",
            "/media/CDROM/support/migwiz/postmigres/web",
            "/media/CDROM/support/migwiz/postmigres/web/base_images",
            "/media/CDROM/support/migwiz/zh-cn",
            "/media/CDROM/support/tools",
            "/media/CDROM/upgrade",
            "/media/CDROM/upgrade/netfx"
        ]
    }

    function getZnodes(arr) {
        let znodes = [];
        let dirArr = [];

        // 全部名稱後加"/"
        for (let i = 0; i < arr.dirs.length; i++) {
            if (!arr.dirs[i].endsWith("/")) {
                arr.dirs[i] += "/";
            }
        }

        // 獲得所有名稱"/"的個數
        for (let i = 0; i < arr.dirs.length; i++) {
            if (arr.dirs[i].endsWith("/")) {
                dirArr.push(arr.dirs[i].split("/").length - 1);
            }
        }

        let min = Math.min.apply(null, dirArr);
        let max = Math.max.apply(null, dirArr);

        // 獲得根節點
        for (let i = 0; i < arr.dirs.length; i++) {
            if (arr.dirs[i].endsWith("/") && arr.dirs[i].split("/").length - 1 === min) {
                znodes.push({
                    name: arr.dirs[i],
                    path: arr.dirs[i],
                    id: 0,
                    pId: -1,
                    iconSkin: "file"
                });
            }
        }

        for (let k = 0; k <= max; k++) {
            for (let i = 0; i < arr.dirs.length; i++) {
                if ((arr.dirs[i].split("/").length - 1) === (min + k + 1) && arr.dirs[i].endsWith("/")) {
                    for (let n = 0; n < znodes.length; n++) {
                        if ((znodes[n].name).split("/").length - 1 == min + k && znodes[n].name.endsWith("/") && arr.dirs[i].indexOf(znodes[n].name) >= 0) {
                            znodes.push({
                                name: arr.dirs[i],
                                path: arr.dirs[i],
                                id: i + 1,
                                pId: znodes[n].id,
                                iconSkin: "file"
                            });
                        }
                    }
                } else if ((arr.dirs[i].split("/").length - 1) === (min + k) && !arr.dirs[i].endsWith("/")) {
                    for (let n = 0; n < znodes.length; n++) {
                        if ((znodes[n].name).split("/").length - 1 == min + k && znodes[n].name.endsWith("/") && arr.dirs[i].indexOf(znodes[n].name) >= 0) {
                            znodes.push({
                                name: arr.dirs[i].split("/")[arr.dirs[i].split("/").length - 1],
                                path: arr.dirs[i],
                                id: i + 1,
                                pId: znodes[n].id,
                                iconSkin: "file"
                            });
                        }
                    }
                }
            }
        }

        return znodes;
    }

    var setting = {
        check: {
            enable: true
        },
        data: {
            simpleData: {
                enable: true
            }
        }
    };

    $.fn.zTree.init($("#org-tree"), setting, getZnodes(arr));
</script>

</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章