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

鍍金池/ 問(wèn)答/HTML/ 請(qǐng)問(wèn)一下嵌套數(shù)組里面的兩個(gè)children 合并為一個(gè)

請(qǐng)問(wèn)一下嵌套數(shù)組里面的兩個(gè)children 合并為一個(gè)

原數(shù)組格式如下

let data= [
        {
            "name1": "第一級(jí)",
            "children2": [
                {
                    "name2": "第二級(jí)"
                }
            ],
            "children1": [
                {
                    "name1": "第二級(jí)",
                    "children2": [
                        {
                            "name2": "第三級(jí)"
                        }
                    ],
                    "children1": [
                        {
                            "name1": "第三級(jí)",
                            "children2": [
                                {
                                    "name2": "第四級(jí)"
                                },
                                {
                                    "name2": "第四級(jí)"
                                },
                            ]
                        },
                        {
                            "name1": "第三級(jí)",
                            "children2": [
                                {
                                    "name2": "第四級(jí)"
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "name1": "第一級(jí)",
            "children2": [],
            "children1": [
                {
                    "name1": "第二級(jí)",
                    "children2": [
                        {
                            "name2": "第三級(jí)"
                        },
                        {
                            "name2": "第三級(jí)"
                        }
                    ]
                }
            ]
        },
    ]

現(xiàn)在想將每一級(jí)的children2里面的對(duì)象合并到children1里面,如果沒(méi)有children1則新建children1。
希望合并后的格式如下

 [
        {
            "name1": "第一級(jí)",
            "children1": [
                {
                    "name2": "第二級(jí)" //來(lái)自children2
                },
                {
                    "name1": "第二級(jí)",
                    "children1": [
                        {
                            "name2": "第三級(jí)"  //來(lái)自children2
                        },
                        {
                            "name1": "第三級(jí)",
                            "children1": [           //來(lái)自children2
                                {
                                    "name2": "第四級(jí)"
                                },
                                {
                                    "name2": "第四級(jí)"
                                },
                                {
                                    "name2": "第四級(jí)"
                                },
                                {
                                    "name2": "第四級(jí)"
                                }
                            ]
                        },
                        {
                            "name1": "第三級(jí)",
                            "children1": [          //來(lái)自children2
                                {
                                    "name2": "第四級(jí)"
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "name1": "第一級(jí)",
            "children1": [
                {
                    "name1": "第二級(jí)",
                    "children1": [      //來(lái)自children2
                        {
                            "name2": "第三級(jí)"
                        },
                        {
                            "name2": "第三級(jí)"
                        }
                    ]
                }
            ]
        }
]

現(xiàn)在我通過(guò)這個(gè)方法可以返回正確的層次,但返回結(jié)果的格式是這樣的[Array(2), Array(1)],只有最里面的一級(jí)是對(duì)象,其他都是嵌套數(shù)組
圖片描述。

function transilate(data) {
   return data.map((item) => {
        if (item.children2) {
            if(item.children2.length>0){
                let concatR=item.children1?item.children1.concat(item.children2):item.children2
                item.children1=concatR
            }
            return transilate(item.children1)
        }
        return item
    });
}
transilate(data)

JS Bin 代碼地址JS Bin 打開(kāi)控制臺(tái)看輸出

請(qǐng)問(wèn)一下該如何修改代碼或有什么其他方法可以實(shí)現(xiàn)想要的效果?

回答
編輯回答
不二心

return transilate(item.children1) -> transilate(item.children1)

2018年8月4日 00:38
編輯回答
毀了心

題主的 result 給的有錯(cuò)啊,,,

let test = JSON.parse(JSON.stringify(data));

function childrenIterator(arr) {
    arr.map(function(obj) {

        if (obj.children2 && obj.children2.length !== 0) {
            obj.children2.forEach(function(o) {
                obj.children1 ? obj.children1.push(o) : obj.children1 = [o];
            });
        }

        delete obj.children2;

        if (obj.children1) {
            childrenIterator(obj.children1);
        }

        return obj;
    });

    return arr;
}
console.log(JSON.stringify(childrenIterator(test)));
2017年12月26日 14:44
編輯回答
終相守
function transilate(data) {
   return data.map((item) => {
        if (item.children2) {
            if(item.children2.length>0){
                let concatR=item.children1?item.children1.concat(item.children2):item.children2
                item.children1=concatR
            }
            delete item.children2
            item.children1 = transilate(item.children1)
        }
        return item
    });
}
2017年11月13日 11:27