Вы можете создать функцию с именем mergeArrays
, которая принимает исходный массив, целевой массив и ключ для сопоставления элементов массива. Используя Array.map
, выполните итерацию по массиву source
, затем, когда будет найден элемент массива destination
с тем же значением key
, присвойте значения объекта и верните карту. Обратите внимание, что это не только присвоит rank
массиву source
, но и все значения в массиве destination
. Похоже, что в примере rank
является единственным отличающимся свойством, это не должно быть проблемой.
Пример Repl
var scores = [
{ name: "Bob", score: 19 },
{ name: "Harry", score: 27 },
{ name: "Janelle", score: 35 }
]
var ranks = [
{ name: "Bob", rank: 3 },
{ name: "Harry", rank: 2 },
{ name: "Janelle", rank: 1 }
]
const mergeArrays = (source, destination, key) => {
return scores.map((score) => {
let rank = ranks.find((rank) => rank[key] === score[key])
return Object.assign(score, rank)
})
}
console.log(mergeArrays(scores, ranks, 'name'))