объединить массив объектов с родительскими и дочерними отношениями с другим массивом объектов, имеющих дочерние значения - PullRequest
0 голосов
/ 24 мая 2019

объединить массив объекта с родительским и дочерним отношением с другим массивом объекта, имеющим только дочерние значения, для извлечения результирующего массива объекта, объединяющего общие значения в обоих

У меня есть массив объектов с родительским дочерним значением

    submenu : [{
    text: 'Website',
    permissionId : 900,
    submenu:[{
            text: 'Publisher Site',
            permissionId : 901
        },

        {
            text: 'Track Disable',
            permissionId : 902
        },

        {
            text: 'Goals',
            permissionId : 904
        }]
}]

и другой массив объектов с дочерним значением

       submenu:[ {
            text: 'Publisher Site',
            permissionId : 901
        },
        {
            text: 'Track Disable',
            permissionId : 902
        }
        ]

, и нам нужен результирующий массив объектов, подобный этому

   submenu : [{ 
    text: 'Website',
    permissionId : 900,
    submenu:  [{
            text: 'Publisher Site',
            permissionId : 901
        },
        {
            text: 'Track Disable',
            permissionId : 902
        }
        ]
     } ]

1 Ответ

0 голосов
/ 24 мая 2019

Я использовал оба объекта в переменных a и b.

a = { submenu : [{
    text: 'Website',
    permissionId : 900,
    submenu:[{
            text: 'Publisher Site',
            permissionId : 901
        },

        {
            text: 'Track Disable',
            permissionId : 902
        },

        {
            text: 'Goals',
            permissionId : 904
        }]
}] }

b = {
submenu:[ {
            text: 'Publisher Site',
            permissionId : 901
        },
        {
            text: 'Track Disable',
            permissionId : 902
        }
        ]
}
var c = b.submenu;
   a.submenu[0].submenu = a.submenu[0].submenu.filter((elm)=> c.find(e=>e.permissionId == elm.permissionId));
console.log(a);

Вывод -

submenu: Array(1)
0:
permissionId: 900
submenu: Array(2)
0: {text: "Publisher Site", permissionId: 901}
1: {text: "Track Disable", permissionId: 902}
length: 2
__proto__: Array(0)
text: "Website"
__proto__: Object
length: 1
__proto__: Array(0)
__proto__: Object
...