Найти одинаковые елементы в массиве в js и суммировать

Всем здравствуйте, решил попробовать сделать задачку и при выводе получаеться что один и тот же елемент в масиве повторяеться несколько раз, елемент выглядит так: “A: 23” и так он повторяеться несколько раз. Как я могу при выводе если он допустим повторяеться 3 раза сделать один елемент который будет равняться не 23 а сумма 3, то есть “А: 69” ? Или может это лучше сделать в процесе формирования массива ? Сравнить елементы между собой и как то суммировать

Приветствия.

Не до конца понятен вопрос. Как выглядит массив с данными? Это массив строк или массив чисел? Каким должен быть результат, если, допустим в массиве есть 2 по 2 повторяющихся элемента, например [10, 5, 10, 5]?

Предположим что это массив чисел и что результатом должна быть сумма первого из повторяющихся чисел. Подходы могут быть разными.

Вариант 1. Создаешь копию массива. Копия массива - хорошая практика когда ты для вычисления результата используешь методы, влияющие на массив (типа sort, splice, pop). Если копию не сделать, то тот кто передает массив (а массив передается по ссылке) после вызова твоего кода будет меть измененный массив (что неожиданно).

Итак, сделали копию. Отсортировали. Когда он отсортирован, то повторяющиеся значения будут рядом друг с другом. Тогда поиск суммы максимально повторяющегося элемента сведется к проходу по массиву, суммированию элементов до следующего отличающегося от текущего и подсчету количества элементов в сумме.

Вариант 2. Не оглядываясь на производительность, просто завести object с где ключ это значение элемента, а значение это объект с количеством и суммой вид {sum: 46, count: 2}. За проход по массиву создать этот объект с суммами и количествами, потом имея объект, найти в нем объект с наибольшим количеством элементов в сумме.

1 лайк