if(sortedArr[i + 1] == sortedArr[i]) {
results.push(sortedArr[i]);
}
Недостаточное условие. Если четыре нуля идут подряд - сколько раз после нуля можно найти равное ему значение? Правильно, три раза - после первого, второго и третьего. Надо ещё проверять, что предыдущий элемент не равен текущему:
const getDuplicates = arr => arr
.slice()
.sort()
.reduce((acc, n, i, a) => (n === a[i + 1] && n !== a[i - 1] && acc.push(n), acc), []);
Но вообще, использовать сортировку не обязательно, есть и другие способы:
const getDuplicates = arr => Array
.from(arr.reduce((acc, n) => acc.set(n, (acc.get(n) ?? 0) + 1), new Map))
.reduce((acc, n) => (n[1] > 1 && acc.push(n[0]), acc), []);
const getDuplicates = arr => Object
.entries(arr.reduce((acc, n) => (acc[n] = acc.hasOwnProperty(n), acc), {}))
.filter(n => n[1])
.map(n => +n[0]);
const getDuplicates = arr =>
[...arr.reduce((acc, n) => (acc[+acc[0].has(n)].add(n), acc), [ new Set, new Set ])[1]];
const getDuplicates = arr =>
[...new Set(arr.filter((n, i, a) => a.includes(n, i + 1)))];
const getDuplicates = arr => arr
.filter((n, i, a) => i !== a.indexOf(n))
.filter((n, i, a) => i === a.indexOf(n));