Делаем просто, ровно то, что спрошено в вопросе:
const result = allCass.filter(function(n) {
return !this.has(n.id);
}, new Set(defaultCass.map(n => n.id)));
Делаем сложно, решаем задачу в более общем виде (источником данных могут быть не обязательно массивы; условие, по которому значения признаются равными, не будем зашивать непосредственно в код - будет параметром функции):
function* diff(data1, data2, key = n => n) {
const getKey = key instanceof Function ? key : n => n[key];
const keys = new Set;
for (const n of data2) {
keys.add(getKey(n));
}
for (const n of data1) {
if (!keys.has(getKey(n))) {
yield n;
}
}
}
В вашем случае применять так:
const result = [...diff(allCass, defaultCass, 'id')];
А можно и так:
Array.from(diff('abcdE', 'AcD', n => n.toLowerCase())) // ['b', 'E']
Или так:
for (const n of diff(Array(8).keys(), Array(5).keys())) {
console.log(n); // 5 6 7
}