const values = arr.length
? arr[0].filter(n => arr.every(m => m.includes(n)))
: [];
или
const values = (arr[0] || []).filter(function(n) {
return this.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
), [])];