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)
но я запутался
  • Вопрос задан
  • 86 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
array2.filter(function(n) {
  return this.has(n.code);
}, new Set(array1.map(n => n.value)))

или

array1.map(function(n) {
  return this[n.value];
}, Object.fromEntries(array2.map(n => [ n.code, n ])))

/*
 * если вдруг в array1 могут быть объекты, value которых отсутствует среди code в array2,
 * то после map'а надо будет сделать фильтрацию, .filter(Boolean), например
 */

или

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" }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы