Исправленный код из вопроса:
let arr = [1, true, 1, 'null', 1, '2', '1', true, 1, true, 'null', true, 'null'];
let res = arr.filter((el) => arr.filter((i) => i === el).length <= 3);
console.log(res); // ['null', '2', '1', 'null', 'null']
Или мой чуть более упоротый вариант:
function solution(input, threshold = 3) {
let counter = new Map();
input.forEach((item) => {
let prevCount = counter.get(item) || 0;
counter.set(item, prevCount + 1);
})
let valid = [];
counter.entries().forEach(([item, count]) => {
if (count <= threshold) {
valid.push(item);
}
});
return input.filter((item) => valid.includes(item));
}
let arr = [1, true, 1, 'null', 1, '2', '1', true, 1, true, 'null', true, 'null'];
console.log(solution(arr)); // ['null', '2', '1', 'null', 'null']