Chefranov
@Chefranov
Новичок

Как найти значения в другом массиве объектов?

Имеются два массива:
var array1 = [{"value": "0E1"}, {"value":"8B3"}...];
var array2 = [{"code":"0E1", "desc": "Some text"}, {"code":"8B3", "desc": "Some text"}, {"code":"9N8", "desc": "Some text"}...]

Как с помощью первого массива вывести подходящие объекты по коду из второго? По сути первый массив - это запрос, а в второй база в которой ищу по value.

Как я понял мне должен помочь метод .filter()
array2.filter(item => item.code == array1.value)
но я запутался
  • Вопрос задан
  • 163 просмотра
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
const result = array2.filter(function(n) {
  return this.has(n.code);
}, new Set(array1.map(n => 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 = array2.filter(n => array1.some(m => m.value === n.code));
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
const array1 = [{ value: '0E1' }, { value: '8B3' }];
const array2 = [
  { code: '0E1', desc: 'Some text' },
  { code: '8B3', desc: 'Some text' },
  { code: '9N8', desc: 'Some text' },
];
const filter = array1.map((el) => el.value);
const result = array2.filter((el) => filter.includes(el.code));
console.log(result);
// Array [ {…}, {…} ]
​//  0: Object { code: "0E1", desc: "Some text" }
​//  1: Object { code: "8B3", desc: "Some text" }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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