Вы можете попробовать следующие 2 подхода.Кроме того, вместо создания массива вы можете использовать Set (лучшая производительность)
Обновить существующий массив, используя цикл while
const data1 = [{ id: 1, name: 'dd' }, { id: 2, name: 'dd' }, { id: 3, name: 'dd' }, { id: 4, name: 'dd' }, { id: 5, name: 'dd' }];
const data2 = [{ id: 2, name: 'dd' },{ id: 4, name: 'dd' }, { id: 5, name: 'dd' }];
const sasas = data2.reduce((a,{id}) => a.add(id), new Set())
let i = 0;
while(i < data1.length) {
if(sasas.has(data1[i].id)) {
data1.splice(i,1);
} else i++;
}
console.log(data1);
Создание нового массива с использованием Array.filter
const data1 = [{ id: 1, name: 'dd' }, { id: 2, name: 'dd' }, { id: 3, name: 'dd' }, { id: 4, name: 'dd' }, { id: 5, name: 'dd' }];
const data2 = [{ id: 2, name: 'dd' },{ id: 4, name: 'dd' }, { id: 5, name: 'dd' }];
const sasas = data2.reduce((a,{id}) => a.add(id), new Set())
const result = data1.filter(({id}) => !sasas.has(id));
console.log(result);