Не знаю насколько оптимально, но без сортировки:
const array = [9, 9, 9, 9, 8, 8, 4, 4, 4, 1, 2];
const getN = (array, n) => {
let acc={}, arr=[];
array.forEach( c => {
acc[c] ? acc[c] += 1 : acc[c] = 1;
arr[ acc[c] ] ? arr[ acc[c] ].push(c) : arr[ acc[c] ] = [c];
} );
for( let i=arr.length - 1; i>1; i-- ) {
if( arr[i].length >= n ) return arr[i];
}
return arr[1];
}
console.log(getN(array, 2)); // [9, 4]
console.log(getN([1, 1, 1, 2, 2, 3, 3, 3,], 2)) // [1, 3]
console.log(getN([5, 5, 5, 9, 8, 9, 1, 1, 1, 1], 3)); // [1, 5, 9]