const result = elements.filter(n => !used.some(m => m.id === n.id));
или
const result = elements.filter(((ids, n) => !ids.includes(n.id)).bind(null, used.map(n => n.id)));
или
const result = elements.filter(function(n) {
return !this.has(n.id);
}, new Set(used.map(n => n.id)));
или
const result = Object.values(used.reduce(
(acc, n) => (delete acc[n.id], acc),
elements.reduce((acc, n) => (acc[n.id] = n, acc), {})
));
или
const result = [...used.reduce(
(acc, n) => (acc.delete(n.id), acc),
new Map(elements.map(n => [ n.id, n ]))
).values()];