#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);