Всегда ли искомый объект существует (т.е., существует ли для каждого
value
из первого массива аналогичное значение
code
во втором)? Если это не важно и вас устраивает возможное получение
undefined
, тогда
const result = array1.map(n => array2.find(m => m.code === n.value));
В противном случае, можно ничего не выдавать, если объект не найден:
const obj2 = Object.fromEntries(array2.map(n => [ n.code, n ]));
const result = array1.reduce((acc, n) => (
(n = obj2[n.value]) && acc.push(n),
acc
), []);
Или, подставлять вместо отсутствующего объекта какое-нибудь другое значение:
const result = array1.map(function({ value: n }) {
return this.get(n) ?? `объект с code="${n}" отсутствует`;
}, new Map(array2.map(n => [ n.code, n ])));
Могут ли значения
code
во втором массиве быть неуникальны? Если да, и надо получать все объекты с указанными
code
, а не один, то можно предварительно сгруппировать второй массив по значениям
code
:
const result = array1.flatMap(function(n) {
return this[n.value] ?? [];
}, array2.reduce((acc, n) => ((acc[n.code] ??= []).push(n), acc), {}));
Имеет ли значение взаимное расположение объектов в результирующем массиве? Если оно должно быть таким же, как и в
array2
, то его и надо перебирать при извлечении объектов, а не первый массив:
const result = array2.filter(function(n) {
return this.has(n.code);
}, new Set(array1.map(n => n.value)));