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

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

將嵌套對象的數(shù)組排序到單獨(dú)的數(shù)組數(shù)組中

將嵌套對象的數(shù)組排序到單獨(dú)的數(shù)組數(shù)組中

我有一個數(shù)組:[   { id: 1,     name: "parent1",     children: [                { id: 10,                  name: "first_child_of_id_1",                  children: [                             { id: 100, name: "child_of_id_10", children: []},                            { id: 141, name: "child_of_id_10", children: []},                             { id: 155, name: "child_of_id_10", children: []}                           ]               },               { id: 42,                  name: "second_child_of_id_1",                  children: [                             { id: 122, name: "child_of_id_42", children: []},                            { id: 133, name: "child_of_id_42", children: []},                             { id: 177, name: "child_of_id_42", children: []}                           ]               }             ]  },  { id: 7,     name: "parent7",     children: [                { id: 74,                  name: "first_child_of_id_7",                  children: [                             { id: 700, name: "child_of_id_74", children: []},                            { id: 732, name: "child_of_id_74", children: []},                             { id: 755, name: "child_of_id_74", children: []}                           ]               },               { id: 80,                  name: "second_child_of_id_7",                  children: [                             { id: 22, name: "child_of_id_80", children: []},                            { id: 33, name: "child_of_id_80", children: []},                             { id: 77, name: "child_of_id_80", children: []}                           ]               }             ]  }] 我需要的是一個數(shù)組,如下所示:[  [ "id", "name", "parent_id", "parent_name" ],  [  1, "parent1", null, "" ],  [ 10, "first_child_of_id_1", 1, "parent1"],  [ 42, "second_child_of_id_1", 1, "parent1"],  [100, "child_of_id_10", 10, "first_child_of_id_1"]]依此類推,所有嵌套對象都可以將它們轉(zhuǎn)換為CSV行。我已經(jīng)檢查了許多答案,并在這里發(fā)現(xiàn)了一個類似的問題:如何將嵌套對象數(shù)組轉(zhuǎn)換為CSV?但是它為許多嵌套對象生成了太長的行,并且我對JavaScript沒有足夠的經(jīng)驗來修改映射函數(shù)。
查看完整描述

1 回答

?
偶然的你

TA貢獻(xiàn)1841條經(jīng)驗 獲得超3個贊

簡單的 DFS 或 BFS 算法應(yīng)該可以完成這里的工作。不同之處在于創(chuàng)建“行”的順序。

如果要將給定節(jié)點(diǎn)的所有子節(jié)點(diǎn)緊跟在其父節(jié)點(diǎn)之后列出,則需要使用 BFS。


DFS 和斷續(xù)器的示例:


const input = [{

        id: 1,

        name: "parent1",

        children: [{

                id: 10,

                name: "first_child_of_id_1",

                children: [{

                        id: 100,

                        name: "child_of_id_10",

                        children: []

                    },

                    {

                        id: 141,

                        name: "child_of_id_10",

                        children: []

                    },

                    {

                        id: 155,

                        name: "child_of_id_10",

                        children: []

                    }

                ]

            },

            {

                id: 42,

                name: "second_child_of_id_1",

                children: [{

                        id: 122,

                        name: "child_of_id_42",

                        children: []

                    },

                    {

                        id: 133,

                        name: "child_of_id_42",

                        children: []

                    },

                    {

                        id: 177,

                        name: "child_of_id_42",

                        children: []

                    }

                ]

            }

        ]

    },

    {

        id: 7,

        name: "parent7",

        children: [{

                id: 74,

                name: "first_child_of_id_7",

                children: [{

                        id: 700,

                        name: "child_of_id_74",

                        children: []

                    },

                    {

                        id: 732,

                        name: "child_of_id_74",

                        children: []

                    },

                    {

                        id: 755,

                        name: "child_of_id_74",

                        children: []

                    }

                ]

            },

            {

                id: 80,

                name: "second_child_of_id_1",

                children: [{

                        id: 22,

                        name: "child_of_id_80",

                        children: []

                    },

                    {

                        id: 33,

                        name: "child_of_id_80",

                        children: []

                    },

                    {

                        id: 77,

                        name: "child_of_id_80",

                        children: []

                    }

                ]

            }

        ]

    }

]


//DFS

function deepWalk(node, parent, output = []) {

    if (!node || typeof node !== 'object' || !node.id) return;


    output.push([node.id, node.name, parent ? parent.id : null, parent ? parent.name : ""])

    if (node.children) {

        for (const child of node.children) {

            deepWalk(child, node, output);

        }

    }


    return output;

}


//BFS

function broadWalk(root) {

    const output = []

    const queue = [];

    queue.push({

        node: root,

        parent: null

    });

    while (queue.length) {

        const {

            node,

            parent

        } = queue.shift();

        output.push([node.id, node.name, parent ? parent.id : null, parent ? parent.name : ""])

        if (node.children) {

            for (const child of node.children) {

                queue.push({

                    node: child,

                    parent: node

                });

            }

        }

    }

    return output;

}





let rowsDfs = [

    ["id", "name", "parent_id", "parent_name"]

];

let rowsBfs = [

    ["id", "name", "parent_id", "parent_name"]

];

for (const node of input) {

    rowsDfs = [...rowsDfs, ...deepWalk(node)];

    rowsBfs = [...rowsBfs, ...broadWalk(node)];


}


console.log("rows DFS: ", rowsDfs)

console.log("rows BFS: ", rowsBfs)


查看完整回答
反對 回復(fù) 2022-09-29
  • 1 回答
  • 0 關(guān)注
  • 90 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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