recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Détermine la longueur des caractères et génère des données json dans une arborescence dom.

Il existe un élément de données avec une telle structure. Il existe de nombreux éléments. Nous devons juger la série en fonction de la longueur du niveau et générer les données json du résultat de l'arborescence DMO. ?

Produit probablement la structure suivante, qui n'est qu'un des objets du tableau.

某草草某草草2744 Il y a quelques jours581

répondre à tous(2)je répondrai

  • 黄舟

    黄舟2017-05-19 10:19:12

    Vous ne pouvez pas écrire de code dans cet exemple, veuillez partager vos réflexions.

    Trier par niveau en premier

    Créez un objet pour le résultat

    Maintenir un autre tableau pour chaque niveau de liste

    Puis poussez

    Une question à considérer est de savoir comment y faire face si le niveau intermédiaire n'existe pas

    répondre
    0
  • 高洛峰

    高洛峰2017-05-19 10:19:12

        var dataJson2= [{"name":"测试2","id":"1","level": "00001"},  //5位数代表1级,10位数代表2级,以此类推
                     {"name":"**a","id":"1","level": "0000100001"},
                     {"name":"***a","id":"1","level":"000010000100001"},
                     {"name":"***a","id":"1","level":"000010000100002"},
                     {"name":"***a","id":"1","level":"000010000100003"},
                     {"name":"**a","id":"1","level": "0000100002"},
                     {"name":"**a","id":"1","level": "0000100003"},
                     {"name":"*b","id":"1","level":  "00002"}]
    
    addTree(dataJson2);
    function addTree(treeData) {
        var sortLenght=treeData[0].level.length;
        //排序
        var myArr = [];
            for(var i = 0; i < treeData.length; i++) {
                var thisIndex = treeData[i].level.length / sortLenght - 1;
                if(myArr[thisIndex] === undefined) {
                    myArr[thisIndex] = []
                }
                myArr[thisIndex].push(i)
            }
    
                //组成梯形
        var ladderArr = [];
            for(var i = myArr.length - 1; i >= 0; i--) {
                switch(i) {
                    case 0:
                        for(var l = 0; l < myArr[i].length; l++) {
                            ladderArr.push(treeData[myArr[i][l]])
                        }
                        break;
                    default:
                        for(var j = 0; j < myArr[i].length; j++) {
                            var str = treeData[myArr[i][j]].level.substr(0, i * sortLenght);
                            for(var k = 0; k < myArr[i - 1].length; k++) {
                                if(treeData[myArr[i - 1][k]].level === str) {
                                    if(treeData[myArr[i - 1][k]].list === undefined) treeData[myArr[i - 1][k]].list = [];
                                    treeData[myArr[i - 1][k]].list.push(treeData[myArr[i][j]])
                                }
                            }
                        }
                }
            }
    
        var treeJson=eval(ladderArr);
    }

    //La solution est comme ci-dessus, le code n'est pas écrit par moi

    répondre
    0
  • Annulerrépondre