第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

JS數(shù)據(jù)轉(zhuǎn)成父子節(jié)點(diǎn)數(shù)據(jù)

JS數(shù)據(jù)轉(zhuǎn)成父子節(jié)點(diǎn)數(shù)據(jù)

翻閱古今 2019-03-12 17:15:57
原始的數(shù)據(jù)是平鋪的 比如originalData: [        { company: 'AAA', department:'AAA-D1', office: 'AAA-D1-O1', pass: 1, onhold: 3},        { company: 'AAA', department:'AAA-D1', office: 'AAA-D1-O2', pass: 3, onhold: 5},        { company: 'AAA', department:'AAA-D2', office: 'AAA-D2-O1', pass: 2, onhold: 7},        { company: 'BBB', department:'BBB-D1', office: 'BBB-D1-O1', pass: 1, onhold: 3},        { company: 'BBB', department:'BBB-D2', office: 'BBB-D2-O1', pass: 4, onhold: 3},        { company: 'BBB', department:'BBB-D3', office: 'BBB-D3-O1', pass: 1, onhold: 3},        ....        ....      ]希望轉(zhuǎn)換成treeData: [    { label: 'AAA', department:'AAA-D1', office: 'AAA-D1-O1', pass: 6, onhold: 15,   // company level         children: [  // department level             {label: 'AAA-D1',  pass: 4, onhold: 8,                children: [  // office level                    {label: 'AAA-D1-O1', pass: 1, onhold: 3},                    {label: 'AAA-D1-O2', pass: 1, onhold: 3},                ]            },            {label: 'AAA-D2',  pass: 2, onhold: 7,                children: [                    {label: 'AAA-D2-O1', pass: 1, onhold: 3},                ]            },        ]    },    ...    ...]    根據(jù)指定的列 轉(zhuǎn)換成父子結(jié)構(gòu)的數(shù)據(jù) 比如 上面的是根據(jù) ['company', 'department', 'office'] 不知道怎么寫了 請(qǐng)大神指導(dǎo) :( :( :( :( :(
查看完整描述

2 回答

?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊

你的輸出格式應(yīng)該有問(wèn)題,起碼

label: 'AAA', department:'AAA-D1', office: 'AAA-D1-O1', pass: 6, onhold: 15, // company level 是不合理的,最多是label: 'AAA', pass: 6, onhold: 15, // company level 吧

如果數(shù)據(jù)能夠保證全是這樣的結(jié)構(gòu)(只有如上的3級(jí)),其實(shí)還是比較好處理的。


var moriginalData= [

        { company: 'AAA', department:'AAA-D1', office: 'AAA-D1-O1', pass: 1, onhold: 3},

        { company: 'AAA', department:'AAA-D1', office: 'AAA-D1-O2', pass: 3, onhold: 5},

        { company: 'AAA', department:'AAA-D2', office: 'AAA-D2-O1', pass: 2, onhold: 7},

        { company: 'BBB', department:'BBB-D1', office: 'BBB-D1-O1', pass: 1, onhold: 3},

        { company: 'BBB', department:'BBB-D2', office: 'BBB-D2-O1', pass: 4, onhold: 3},

        { company: 'BBB', department:'BBB-D3', office: 'BBB-D3-O1', pass: 1, onhold: 3}

      ];

function a2o(originalData){

    var outData=[];

    var outObj={};

    for(var i=0;i<originalData.length;i++){

        var company= originalData[i].company;

        var department= originalData[i].department;

        var office={label:originalData[i].office, pass:originalData[i].pass, onhold:originalData[i].onhold};

        if(outObj[company]===undefined){

            outObj[company]={childrenKey:[], pass:0, onhold:0};

        }

        if(outObj[company][department]===undefined){

            outObj[company][department]={children:[], pass:0, onhold:0 };

            outObj[company].childrenKey.push(department)

        }

        outObj[company][department].children.push(office);


        outObj[company][department].pass=outObj[company][department].pass+office.pass;

        outObj[company].pass=outObj[company].pass+office.pass;


        outObj[company][department].onhold=outObj[company][department].onhold+office.onhold;

        outObj[company].onhold=outObj[company].onhold+office.onhold;

    }

    for( var com in outObj){

        var tmpA={label:com, pass:outObj[com].pass, onhold:outObj[com].onhold, children:[]};

        for (var j=0; j<outObj[com].childrenKey.length; j++ ){

            var tD=outObj[com][ outObj[com].childrenKey[j] ];

            tmpA.children.push({label:outObj[com].childrenKey[j] ,

                                pass:tD.pass , 

                                onhold:tD.onhold ,

                                children:tD.children} );

        }

        outData.push(tmpA);

    }

    return outData;

}   


var treeDate=a2o(moriginalData)

console.log(treeDate);  


查看完整回答
反對(duì) 回復(fù) 2019-04-04
  • 2 回答
  • 0 關(guān)注
  • 551 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)