Учитывая две коллекции объектов с рекурсивной структурой:
Collection1 = [
{
Header: "H1",
Items: [{
Header: "H1.1"
},{
Header: "H1.2"
}]
},
{
Header: "H2",
Items: [{
Header: "H2.1"
}]
}
]
Collection2 = [
{
Header: "H1",
Items: [{
Header: "H1.1",
Items: [{
Header: "H1.1.1"
}]
}]
}
]
Я хотел бы создать какую-то функцию для объединения этих двух коллекций, имеющих в качестве свойства сравнения ту, которую я указываю, в данном случае Header
, и это объединяет их свойства, так что результат выглядит примерно следующим образом:
Result = [
{
Header: "H1",
Items: [{
Header: "H1.1",
Items: [{
Header: "H1.1.1"
}]
},{
Header: "H1.2"
}]
},
{
Header: "H2",
Items: [{
Header: "H2.1"
}]
}
]
Как видите, он рекурсивно проверяет свойства объекта и, если подобный элемент существует (в данном случае, сравниваясвойство Header
), оно просто объединяет оба объекта.
Я пробовал Union()
, Distinct()
и т. д., но я не могу найти способ достичь этого.
РЕДАКТИРОВАТЬ: Объединение должно быть сделано на основе "того же уровня", так что только элементы с одинаковым заголовком на том же уровне глубины должны считаться равными.