在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 請教一個簡單的js數(shù)組轉對象問題

請教一個簡單的js數(shù)組轉對象問題

var menuArray=[
    { id: 1, name: "統(tǒng)計內容", pid: 0 },
    { id: 2, name: "產(chǎn)品部", pid: 1 },
    { id: 3, name: "UE", pid: 2 },
    { id: 4, name: "產(chǎn)品", pid: 2 },
    { id: 5, name: "研發(fā)部", pid: 1 },
    { id: 6, name: "前端", pid: 5 },
    { id: 7, name: "Java", pid: 5 },
    { id: 8, name: "測試部", pid: 1 },
    { id: 9, name: "測試1", pid: 8 },
    { id: 10, name: "測試2", pid: 8 }
];

通過操作,把上面數(shù)據(jù)轉成下面數(shù)據(jù)

var data=[{
    id:0,
    name: "統(tǒng)計內容",
    item:[{
            id: 2,
            name: '產(chǎn)品部',
            item: [
                {
                    id:3,
                    name: 'UE'
                },
                {
                    id:4,
                    name: '產(chǎn)品'
                }
            ]
        },
        {
            id: 5,
            name: '研發(fā)部',
            item: [
                {
                    id:6,
                    name: '前端'
                },
                {
                    id:7,
                    name: 'Java'
                }
            ]
        },
        {
            id: 8,
            name: '測試部',
            item: [
                {
                    id:9,
                    name: '測試1'
                },
                {
                    id:10,
                    name: '測試2'
                }
            ]
        }
    ]
}]

注意:數(shù)據(jù)深度不定

回答
編輯回答
夏木
var menuArray=[
    { id: 1, name: "統(tǒng)計內容", pid: 0 },
    { id: 2, name: "產(chǎn)品部", pid: 1 },
    { id: 3, name: "UE", pid: 2 },
    { id: 4, name: "產(chǎn)品", pid: 2 },
    { id: 5, name: "研發(fā)部", pid: 1 },
    { id: 6, name: "前端", pid: 5 },
    { id: 7, name: "Java", pid: 5 },
    { id: 8, name: "測試部", pid: 1 },
    { id: 9, name: "測試1", pid: 8 },
    { id: 10, name: "測試2", pid: 8 }
];

let menuDict = menuArray.reduce((t, c)=> [c.item=[], t['' + c.id] = c, t][2], {});

let result =  menuArray.reduce((t, c)=>{
    if(menuDict[c.pid]) {
        menuDict[c.pid].item.push(c);
    } else {
        t.push(c)
    }
    return t 
}, [])

console.log(result);
2017年7月1日 05:02