Как объединить 2 jsons на основе одного и того же значения? - PullRequest
0 голосов
/ 21 апреля 2020

Я использую Angular Контроль дерева материалов и хотел бы объединить 2 jsons, прежде чем установить его. Я хочу объединить их на основе m_id, удалить дубликаты, а также отсортировать объекты внутри узлов на основе значения sort_id. Я пытался посмотреть на решения, предложенные в других темах, но не нашел, что они работают для глубоких структур. Мы будем благодарны за любую помощь / руководство.

Например:

JSON1:

var json1 = {
data: [{
        name: "Node 1",
        m_id: "node1",
        sort_id: 9,
        children: [{
                name: "Node 1_1",
                m_id: "node1_1",
                sort_id: 6,
                children: [{
                        name: "Node 1_1_1",
                        m_id: "node1_1_1",
                        sort_id: 9,
                        children: []
                    },
                    {
                        name: "Node 1_1_2",
                        m_id: "node1_1_2",
                        sort_id: 2,
                        children: []
                    }
                ]
            },
            {
                name: "Node 1_2",
                m_id: "node1_2",
                sort_id: 3,
                children: [{
                        name: "Node 1_2_1",
                        m_id: "node1_2_1",
                        sort_id: 1,
                        children: []
                    },
                    {
                        name: "Node 1_2_2",
                        m_id: "node1_2_2",
                        sort_id: 5,
                        children: []
                    }
                ]
            }
        ]
    },
    {
        name: "Node 2",
        m_id: "node2",
        sort_id: 6,
        children: [{
                name: "Node 2_1",
                m_id: "node2_1",
                sort_id: 3,
                children: []
            },
            {
                name: "Node 2_2",
                m_id: "node2_2",
                sort_id: 2,
                children: []
            }
        ]
    }
]};

JSON2:

var json2 = {
    data: [{
            name: "Node 1",
            m_id: "node1",
            sort_id: 9,
            children: [{
                    name: "Node 1_1",
                    m_id: "node1_1",
                    sort_id: 6,
                    children: [{
                            name: "Node 1_1_1",
                            m_id: "node1_1_1",
                            sort_id: 9,
                            children: []
                        },
                        {
                            name: "Node 1_1_3",
                            m_id: "node1_1_3",
                            sort_id: 5,
                            children: []
                        }
                    ]
                },
                {
                    name: "Node 1_2",
                    m_id: "node1_2",
                    sort_id: 3,
                    children: [{
                            name: "Node 1_2_1",
                            m_id: "node1_2_1",
                            sort_id: 1,
                            children: []
                        },
                        {
                            name: "Node 1_2_2",
                            m_id: "node1_2_2",
                            sort_id: 5,
                            children: []
                        },
                        {
                            name: "Node 1_2_3",
                            m_id: "node1_2_3",
                            sort_id: 7,
                            children: []
                        }
                    ]
                }
            ]
        },
        {
            name: "Node 4",
            m_id: "node4",
            sort_id: 8,
            children: [{
                    name: "Node 4_1",
                    m_id: "node4_1",
                    sort_id: 4,
                    children: []
                },
                {
                    name: "Node 4_2",
                    m_id: "node4_2",
                    sort_id: 1,
                    children: []
                }
            ]
        }
    ]
};

1 Ответ

0 голосов
/ 21 апреля 2020

Вероятно, с помощью такой библиотеки, как loda sh.

Просто проанализируйте json, а затем используйте https://lodash.com/docs/#merge.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...