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.has(n)), new Map))
.reduce((acc, n) => (n[1] && acc.push(n[0]), acc), []);
const getDuplicates = arr =>
arr.reduce((acc, n) => (
(acc[1][n] = -~acc[1][n]) === 2 && acc[0].push(n),
acc
), [ [], {} ])[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));