const result = [];
for (const n of arrWithObj) {
if (!arr.includes(n.id)) {
result.push(n);
}
}
или
const result = [];
COLLECT_OBJECTS:
for (let i = 0; i < arrWithObj.length; i++) {
for (let j = 0; j < arr.length; j++) {
if (arr[j] === arrWithObj[i].id) {
continue COLLECT_OBJECTS;
}
}
result[result.length] = arrWithObj[i];
}
или
const result = arrWithObj.filter(function(n) {
return !this.has(n.id);
}, new Set(arr));
или
const result = (function get(i, n = arrWithObj[i]) {
return n
? [].concat(~arr.indexOf(n.id) ? [] : n, get(-~i))
: [];
})(0);
или
const result = [...arr.reduce(
(acc, n) => (acc.delete(n), acc),
new Map(arrWithObj.map(n => [ n.id, n ]))
).values()];