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

0
задан juststartedout 8 April 2019 в 19:03
поделиться

1 ответ

Если вы не хотите искать в arr1 каждый элемент из arr2 (решение O (n²)), вы можете создать объект поиска для arr1, связанный с id. Затем вы можете просто выполнить цикл arr2, объединяя найденный объект, просматривая его. Это будет более эффективно, если у вас есть большие массивы.

let arr1 = [{id: 100, quantity: 2, grp: '1A'},{id: 101, quantity: 2, grp: '2A'}]
let arr2 = [{id: 101, color: "#FFF"}, {id: 100, color: "#000"}] 

// make lookup
let lookup = arr1.reduce((lookup, item) => lookup.set(item.id, item), new Map)

// assign color to correct object
arr2.forEach(({id, ...rest}) => Object.assign(lookup.get(id), rest))
console.log(arr1)

0
ответ дан Mark Meyer 8 April 2019 в 19:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: