Как оптимально объединить два массива разных объектов на основе атрибута? - PullRequest
0 голосов
/ 15 июня 2019

Первый вопрос здесь (я имею в виду, как никогда), так что извините, если я написал в неправильном разделе или не нашел уже данного ответа.У меня есть 2 массива объектов.Первый, назовем его oldArray, имеет 1000 объектов с атрибутами
{id, name, age, address, любимый номер, любимый математик}.

Другой, давайте назовем его, inputArray имеет 20 объектов, атрибуты которых являются подмножеством объектов в oldArray, например
{id, age, любимый номер}.

Мне нужно создать updatedArray, давайте назовем его newArray, в котором объекты из oldArray, идентификаторы которых отсутствуют в inputArray, остаются неизменными, но атрибуты объектов, идентификаторы которых существуют в inputArray,перезаписаны новыми.

Я заставил его работать с fors и ifs, но я ищу
a) более эффективный способ
b) "более чистый" способ, такой как использование lodash иличто-то, чего я не знаю: P
c) желательно оба из перечисленных выше

Итак, ожидаемые результаты.

let oldArray = [
{
id: 1,
имя: Акис,
возраст: 27,
адрес: Миконос,
любимый номер: 23,
любимый математик: Риман
},
{
id: 2,
имя: Мария,
возраст: 41,
адрес: Парос,
любимый номер: 10,
любимый математик: Рамануджан
},
{
id: 3,
имя: София,
возраст: 13,
адрес: Итака,
любимое число: 4,
любимый математик: Гаусс
},
{
id: 4,
имя: Энтони,
возраст: 18,
адрес: Koufonisia,
любимый номер: 33,
любимый математик: Metallica
},
{
id: 5,
имя: Йоло,
возраст: 99,
адрес: где-то,
любимый номер: 123,
любимый математик: Эйлер
}
]

///////////////////////////////////////////////////////////

let inputArray = [
{
id: 2,
возраст: 23,
любимый номер: 13
},
{
id: 5,
возраст: 100,
любимый номер: 99
}
]

\\\\\\\\\\\\\\\\\\\\\\\\\\\\

let newArray = [
{
id: 1,
name:Акис,
возраст: 27,
адрес: Миконос,
любимый номер: 23,
любимый математик: Риман
},
{
id: 2,
имя: Мария,
возраст: 23 года, _________________________________ //! ИЗМЕНЕНО!
адрес: Парос, любимый номер: 13, ____________________ //! ИЗМЕНЕНО!
любимый математик: Ramanujan
},
{
id: 3,
имя: София,
возраст: 13,
адрес: Итака,
любимый номер: 4,
любимыйматематик: Гаусс
},
{
идентификатор: 4,
имя: Энтони,
возраст: 18,
адрес: Куфонисия,
любимый номер: 33,
любимый математик: Metallica
},
{
id: 5,
имя: Yolo,
возраст: 100, _________________________________ //! CHANGED!
адрес: где-то, любимый номер: 99, _____________________ //! ИЗМЕНЕНО!
любимый математик: Эйлер
}
]

PS.Я пропускаю некоторые цитаты, но я надеюсь, что вы поняли!: P

...