Сравнить значения вложенных объектов массива с элементами другого массива

Имеется массив типа первый массив типа:

const arr1 = [7, 7, 6, 7, 8, 4, 8, 6, 6, 2]

Затем имеется второй массив, массив объектов

const arr2 = [
{id: 1, type: 'book'},
{id: 2, type: 'some'},
{id: 3, type: 'cat'},
{id: 4, type: 'dog'},
{id: 5, type: 'apple'},
{id: 6, type: 'pig'},
{id: 7, type: 'pen'}
]

Нужно id вложенных объектов массива arr2 сравнивать с элементами массива arr1. Если найдется совпадение, то есть id будет равен первому совпавшему числу из массива arr1, то значение type вывести в консоль. Подскажите, как реализовать такой функционал?


Ответы (1 шт):

Автор решения: vsemozhebuty

Если правильно понимаю, можно так:

const arr1 = [7, 7, 6, 7, 8, 4, 8, 6, 6, 2];

const arr2 = [
  {id: 1, type: 'book'},
  {id: 2, type: 'some'},
  {id: 3, type: 'cat'},
  {id: 4, type: 'dog'},
  {id: 5, type: 'apple'},
  {id: 6, type: 'pig'},
  {id: 7, type: 'pen'}
];

for (const { id, type } of arr2) {
  if (arr1.includes(id)) console.log(type);
}

Если первый массив большой, экономнее будет проверять по Set:

const arr1 = [7, 7, 6, 7, 8, 4, 8, 6, 6, 2];
const set = new Set(arr1);

const arr2 = [
  {id: 1, type: 'book'},
  {id: 2, type: 'some'},
  {id: 3, type: 'cat'},
  {id: 4, type: 'dog'},
  {id: 5, type: 'apple'},
  {id: 6, type: 'pig'},
  {id: 7, type: 'pen'}
];

for (const { id, type } of arr2) {
  if (set.has(id)) console.log(type);
}

→ Ссылка