const values = (arr[0] || [])
.filter(n => arr.every(m => m.includes(n)))
.filter((n, i, a) => i === a.indexOf(n));
или
const values = (([ set, ...sets ]) => {
return set ? [...set].filter(n => sets.every(m => m.has(n))) : [];
})(arr.map(n => new Set(n)));
или
const values = Array
.from(arr
.flatMap(n => [...new Set(n)])
.reduce((acc, n) => acc.set(n, (acc.get(n) || 0) + 1), new Map))
.reduce((acc, n) => ((n[1] === arr.length) && acc.push(n[0]), acc), []);
или
const values = Array
.from(arr.reduce((acc, n) => (
n.forEach(m => acc.set(m, acc.get(m) || new Set).get(m).add(n)),
acc
), new Map))
.reduce((acc, n) => (n[1].size === arr.length && acc.push(n[0]), acc), []);
UPD.
Наконец-то дождались:
const values = [...arr.reduce((acc, n) => (
n = new Set(n),
acc.intersection?.(n) ?? n
), [])];