cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Tentukan panjang aksara dan hasilkan data json dalam struktur pepohon dom.

Terdapat sekeping data dengan struktur sedemikian. Kita perlu menilai tahap mengikut panjang tahap dan menjana data json hasil pepohon DMO. ?

Mungkin menghasilkan struktur berikut, yang merupakan salah satu objek tatasusunan.

某草草某草草2786 hari yang lalu635

membalas semua(2)saya akan balas

  • 黄舟

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

    Anda tidak boleh menulis kod dalam contoh ini, sila kongsi pendapat anda.

    Isih mengikut tahap dahulu

    Buat objek untuk hasilnya

    Kekalkan tatasusunan lain untuk setiap peringkat senarai

    Kemudian tolak

    Persoalan yang perlu difikirkan ialah bagaimana menanganinya sekiranya peringkat pertengahan tidak wujud

    balas
    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);
    }

    //Penyelesaian adalah seperti di atas, kod tidak ditulis oleh saya

    balas
    0
  • Batalbalas