Если делать ровно то, что спрошено, тогда
tags.filter(n => active.some(m => m.name === n.name))
// или
active.flatMap(function(n) {
return this.get(n.name) || [];
}, new Map(tags.map(n => [ n.name, n ])))
Но можно решить задачу и в чуть более общем виде:
function intersection(data1, data2, key = n => n) {
const getKey = key instanceof Function ? key : n => n[key];
const keys = new Set(Array.from(data2, getKey));
return Array.prototype.filter.call(data1, n => keys.has(getKey(n)));
}
// ваш случай
intersection(tags, active, 'name')
// есть и другие варианты применения
intersection([ 69, 187, 666 ], [ 0, 1, 2, 3, 187 ]) // [187]
intersection('aBCdE', 'bDfHj', n => n.toLowerCase()) // ['B', 'd']