Нужно сравнить элементы в массиве JavaScript и удалить те, которые встречаются более трех раз?

Как написать функцию на JavaScript, которая будет удалять из массива все элементы, встречающиеся более трех раз? Мой первоначальный подход с использованием метода `filter()` не сработал.
  • 16 мая 2024 г. 7:31
Ответы на вопрос 2
Вот пример функции на JavaScript, которая удаляет из массива все элементы, встречающиеся более трех раз:

```javascript
function removeElements(array) {
    let counts = {};
    let result = array.filter(item => {
        counts[item] = counts[item] ? counts[item] + 1 : 1;
        return counts[item] <= 3;
    });

    return result;
}

// Пример использования
let array = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4];
let filteredArray = removeElements(array);
console.log(filteredArray); // [1, 2, 2, 3, 3, 3, 4, 4]
```

Эта функция использует объект `counts` для подсчета количества встречающихся элементов. Затем она использует метод `filter()` для создания нового массива, содержащего только те элементы, которые встречаются не более трех раз.
Если необходимо удалить из массива все элементы, которые встречаются больше 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) =&gt; (Object.assign(obj, { [item]: Array.isArray(obj[item]) ? obj[item].concat(item) : [item] })), {})
Object.values(itemsSplitting).filter((item) =&gt; item.length &lt;= 3).flat() // -&gt; ['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) =&gt; (Object.assign(obj, { [item]: Array.isArray(obj[item]) ? obj[item].concat(item) : [item] })), {})
Object.values(itemsSplitting).map((item) =&gt; item.slice(0, 3)).flat() // -&gt; [1, 1, 1, '2', true, true, true, 'null', 'null', 'null']</code></pre>
Похожие вопросы