Я хочу объединить два массива объектов, чтобы мне было легче отображать их в HTML. Функция должна найти совпадающие значения ключей, называемых «id» в arr1 и «source» в arr2. Вот как это выглядит:
let arr1 = [
{id = 1,
name = "Anna"},
{id = 2,
name = "Chris"}
]
let arr2 = [
{childName = "Brian",
{source = 1}},
{childName = "Connie",
{source = 2}}
{childName = "Dory",
{source = 1}}
]
Я пробовал разные подходы, лучший из которых использовал forEach и filter для массивов. Я пытаюсь установить новое свойство в объектах arr1, которое называется "children".
arr1.forEach(el => el.children = arr2.filter(checkMatch));
function checkMatch(child){
for(let i=0;i<arr1.length;i++){
child.childName.source === arr1[i].id
}
}
И это приводит к добавлению подходящих потомков к первому объекту (теперь у Анны есть Брайан и Дори), так что это правильно, но он также добавляет тех же потомков ко второму объекту (поэтому у Криса также есть Брайан и Дори).
Где здесь моя ошибка? Я предполагаю, что цикл не работает так, как я хочу, чтобы он работал, но я не знаю, какой и как это происходит.