Если необходимо удалить из массива все элементы, которые встречаются больше 3 раз, то решение ниже: <br/> <pre><code class="javascript">let arr = [1, true, 1, 'null', 1, '2', '1', true, 1, true, 'null', true, 'null'];
const itemsSplitting = arr.reduce((obj, item) => (Object.assign(obj, { [item]: Array.isArray(obj[item]) ? obj[item].concat(item) : [item] })), {})
Object.values(itemsSplitting).filter((item) => item.length <= 3).flat() // -> ['2', 'null', 'null', 'null']</code></pre> <br/> <br/> Если нужно удалить лишние значения из массива которые встречаются чаще чем 3 раза, то можно так: <br/> <pre><code class="javascript">let arr = [1, true, 1, 'null', 1, '2', '1', true, 1, true, 'null', true, 'null'];
const itemsSplitting = arr.reduce((obj, item) => (Object.assign(obj, { [item]: Array.isArray(obj[item]) ? obj[item].concat(item) : [item] })), {})
Object.values(itemsSplitting).map((item) => item.slice(0, 3)).flat() // -> [1, 1, 1, '2', true, true, true, 'null', 'null', 'null']</code></pre>