亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JS面試題-計算題,寫個函數,把數組變成對象結構

JS面試題-計算題,寫個函數,把數組變成對象結構

慕工程0101907 2018-08-03 10:21:42
請問,下面 data數組,如何寫一個函數,使 data數組變成 tree的格式結構。var data = [{id:"2", value:"xxx"},{id:"3", value:"xxx"},{id:"4", value:"xxx"},{id:"6", value:"xxx"},{id:"5", value:"xxx"},{id:"1", value:"xxx"},]寫個函數變為var tree = {"1":{    "children":{        "2":{            "children":{                "4":{                    "children":{                        "6":{                                                }                    }                }            }        }    }},"3":{    "children":{        "5":{                    }    }}
查看完整描述

2 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

大兄弟,你這tree完全沒有規律啊

查看完整回答
反對 回復 2018-08-05
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

實現了,主要考了3點:

  1. 邏輯

  2. 遞歸

  3. Object.keys()

代碼未優化,先去吃飯了,本地測試完成

var data = [

    { id: "2", value: "xxx" },

    { id: "3", value: "xxx" },

    { id: "4", value: "xxx" },

    { id: "6", value: "xxx" },

    { id: "5", value: "xxx" },

    { id: "1", value: "xxx" },

];

var tree = {


    "1": {

        "children": {

            "2": {

                "children": {

                    "4": {

                        "children": {

                            "6": {


                            }

                        }

                    }

                }

            }

        }

    },

    "3": {

        "children": {

            "5": {


            }

        }

    }

};


function trans(data) {

    let dataSort = data.sort((a, b) => {

        return a.id - b.id < 0 ? -1 : 1;

    });


    let tree;


    for (let i = 0; i < dataSort.length; i++) {

        let idNum = dataSort[i].id;

        let isEven = Number(idNum) % 2 === 0;


        if (tree === undefined) {

            tree = {};

            tree[1] = {};

        } else if (isEven) {

            appendChildAttr(tree[1], idNum);

        } else {


            if (tree[3] === undefined) {

                tree[3] = {};

            }else {

                appendChildAttr(tree[3], idNum);    

            }            

            

        }


        function appendChildAttr(parNode, childrenId) {


            if (Object.keys(parNode).length === 0) {

                parNode.children = {};

                parNode.children[childrenId] = {};

            } else {

                appendChildAttr(parNode.children[Object.keys(parNode.children)[0]], childrenId);

            }


        }

    }

    return tree;

}


console.log(JSON.stringify(trans(data))===JSON.stringify(tree));


查看完整回答
反對 回復 2018-08-05
  • 2 回答
  • 0 關注
  • 999 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號