фильтровать элементы одного массива wrt в другой массив в js

#javascript #filter

#javascript #Фильтр

Вопрос:

 let array1 = [{id: 1, name:'xyz', inclusions: [43,23,12]},{id: 2, name: 'abc',inclusions:[43, 12, 90]},{id: 3, name:'pqr', inclusions: [91]}];
let array 2 = [43, 12, 90, 45];
 

Теперь я хочу получить все элементы array1, которые имеют включения, присутствующие в array2.

Таким образом, вывод будет чем-то:

 result = [{id: 1, name:'xyz', inclusions: [43,23,12]},{id: 2, name: 'abc',inclusions:[43, 12, 90]}
 

Я использую два цикла for, которые мне не нужны. Как я могу этого добиться, используя filter и includes.

Ответ №1:

Фильтровать по тому, включены ли .some элементы объекта, над которым выполняется итерация:

 let array1 = [{id: 1, name:'xyz', inclusions: [43,23,12]},{id: 2, name: 'abc',inclusions:[43, 12, 90]},{id: 3, name:'pqr', inclusions: [91]}];
let array2 = [43, 12, 90, 45];

const filtered = array1.filter(({ inclusions }) => inclusions.some(
  num => array2.includes(num)
));
console.log(filtered);