Удалить данные из одного массива, не имеющиеся в другом массиве

Есть 2 массива:

let a = [
['A'; 1], ['B', 2], ['D', 2]
];

let b = [
['A'; 1], ['B', 2], ['C', 2], ['D', 5], ['E', 7]
];

Необходимо удалить из массива b данные ['C', 2] и ['E', 7], то есть те, которых нет в массиве A. Как это сделать?


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

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

Необходимо удалить из массива b данные ['C', 2] и ['E', 7], то есть те, которых нет в массиве A. Как это сделать?

Например вот так...

const a = [
  ['A', 1], ['B', 2], ['D', 2]
];

let b = [
  ['A', 1], ['B', 2], ['C', 2], ['D', 5], ['E', 7]
];
b = b.filter(([b1, b2]) => a.some(([a1, a2]) => a1 === b1 && a2 === b2))
console.log(b)

→ Ссылка
Автор решения: Owlly

еще вариант

let a = [
  ['A', 1], ['B', 2], ['D', 2]
];

let b = [
  ['A', 1], ['B', 2], ['C', 2], ['D', 5], ['E', 7]
];

//set из 1го массива
const setA = new Set(a.map(item => `${item[0]}-${item[1]}`));

let filteredB = b.filter(item => setA.has(`${item[0]}-${item[1]}`));

console.log(filteredB);

→ Ссылка