Obtenir une liste des ID/noms parents à partir d'un objet JSON
P粉190443691
P粉190443691 2023-09-07 16:38:02
0
1
492

J'ai des données JSON contenant les détails de la structure des dossiers. Il suffit de donner un nom de dossier et de récupérer sa hiérarchie parent.

Ma structure est la suivante...

FolderHome
   lvl1
     lvl11
     lvl12
     lvl13
   lvl2
     lvl21
     lvl22
     lvl23

Ce dont j'ai besoin, c'est d'une sortie

  • FolderHomelvl2 如果 findparent('lvl23') est appelé.
  • FolderHomelvl1 如果 findparent('lvl12') est appelé.
{
    "Items": [
        {
            "Name": "FolderHome",
            "ID": 1,
            "ParentID": 0,
            "OwnerID": 0,
            "HasParent": false,
            "HasOwner": false,
            "ValueListID": 4,
            "DisplayID": "1",
            "HasIcon": false,
            "HasAutomaticPermission": false,
            "IsDeleted": false,
            "ItemGUID": "{1F58043A-2876-44A5-B3FA-B170098C32F1}"
        },
        {
            "Name": "lvl1",
            "ID": 11,
            "ParentID": 1,
            "OwnerID": 0,
            "HasParent": true,
            "HasOwner": false,
            "ValueListID": 4,
            "DisplayID": "11",
            "HasIcon": false,
            "HasAutomaticPermission": false,
            "IsDeleted": false,
            "ItemGUID": "{915BA6C4-3FDE-4B8F-AD87-A0054C8A6A9C}"
        },
        {
            "Name": "lvl2",
            "ID": 15,
            "ParentID": 1,
            "OwnerID": 0,
            "HasParent": true,
            "HasOwner": false,
            "ValueListID": 4,
            "DisplayID": "15",
            "HasIcon": false,
            "HasAutomaticPermission": false,
            "IsDeleted": false,
            "ItemGUID": "{84341658-816A-4987-87F6-75CAE1AE81E7}"
        },
        {
            "Name": "lvl21",
            "ID": 16,
            "ParentID": 15,
            "OwnerID": 0,
            "HasParent": true,
            "HasOwner": false,
            "ValueListID": 4,
            "DisplayID": "16",
            "HasIcon": false,
            "HasAutomaticPermission": false,
            "IsDeleted": false,
            "ItemGUID": "{0AFC4C26-D54B-4959-9276-D3ED1B447316}"
        },
        {
            "Name": "lvl22",
            "ID": 17,
            "ParentID": 15,
            "OwnerID": 0,
            "HasParent": true,
            "HasOwner": false,
            "ValueListID": 4,
            "DisplayID": "17",
            "HasIcon": false,
            "HasAutomaticPermission": false,
            "IsDeleted": false,
            "ItemGUID": "{6005594F-71E3-4880-8843-36081DB7CA29}"
        },
        {
            "Name": "lvl23",
            "ID": 18,
            "ParentID": 15,
            "OwnerID": 0,
            "HasParent": true,
            "HasOwner": false,
            "ValueListID": 4,
            "DisplayID": "18",
            "HasIcon": false,
            "HasAutomaticPermission": false,
            "IsDeleted": false,
            "ItemGUID": "{0B2453DA-8ED0-4C6C-8F3B-F05DD3B63AA1}"
        },
        {
            "Name": "lvl11",
            "ID": 12,
            "ParentID": 11,
            "OwnerID": 0,
            "HasParent": true,
            "HasOwner": false,
            "ValueListID": 4,
            "DisplayID": "12",
            "HasIcon": false,
            "HasAutomaticPermission": false,
            "IsDeleted": false,
            "ItemGUID": "{4014C72D-FC10-4B21-AD62-6B7562F44833}"
        },
        {
            "Name": "lvl12",
            "ID": 13,
            "ParentID": 11,
            "OwnerID": 0,
            "HasParent": true,
            "HasOwner": false,
            "ValueListID": 4,
            "DisplayID": "13",
            "HasIcon": false,
            "HasAutomaticPermission": false,
            "IsDeleted": false,
            "ItemGUID": "{9351B350-DFAC-4BE2-ABF0-AD5FCAC7F48A}"
        },
        {
            "Name": "lvl13",
            "ID": 14,
            "ParentID": 11,
            "OwnerID": 0,
            "HasParent": true,
            "HasOwner": false,
            "ValueListID": 4,
            "DisplayID": "14",
            "HasIcon": false,
            "HasAutomaticPermission": false,
            "IsDeleted": false,
            "ItemGUID": "{661480EA-7382-4023-9FF3-0C7205DAB5BF}"
        }
    ]
}
// If the required node is found, return true
// matching nodes added to the result parameter
var findParent = function (parentnode, id, result) {
    if (parentnode.Id == id){
        result.push(parentnode.Parent);
        return true;
    }
    if (parentnode.children) {
        for (var i = 0; i < parentnode.children.length; i++) {
            var node = parentnode.children[i];
            if (parentnode.Parent && findParent(node, id, result)) {
                result.push(parentnode.Parent);
                return true;
            }
        }
    }
    // no matches found - return false
    return false;
}

var result = [];
findParent(obj, "13", result)
console.log(result);

Mon code vient de revenir [].

P粉190443691
P粉190443691

répondre à tous(1)
P粉404539732

Vous pouvez emporter deux objets d'aide, un pour le nom et un autre pour les parents.

const
    items = [{ Name: "FolderHome", ID: 1, ParentID: 0 }, { Name: "lvl1", ID: 11, ParentID: 1 }, { Name: "lvl2", ID: 15, ParentID: 1 }, { Name: "lvl21", ID: 16, ParentID: 15 }, { Name: "lvl22", ID: 17, ParentID: 15 }, { Name: "lvl23", ID: 18, ParentID: 15 }, { Name: "lvl11", ID: 12, ParentID: 11 }, { Name: "lvl12", ID: 13, ParentID: 11 }, { Name: "lvl13", ID: 14, ParentID: 11 }],
    idName = Object.fromEntries(items.map(({ ID, Name }) => [ID, Name])),
    nameParentID = Object.fromEntries(items.map(({ Name, ParentID }) => [Name, ParentID])),
    getParents = name => {
        const p = nameParentID[name];
        if (!p) return '';
        const pName = getParents(idName[p]);
        return pName + (pName && '\') + idName[p];
    }

console.log(getParents('lvl23')); // FolderHome\lvl2
console.log(getParents('lvl12')); // FolderHome\lvl1
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal