Как вариант: использовать другой массив для хранения индексов первых элементов каждого ключа. При встрече с ключем проверяем, нет ли у нас его идекса в массиве. Если есть, то прибавляем значения текущего ряда к ряду, полученному по индексу и удаляет текущий ряд, иначе сохраняем индекс.
Проблема лишь в том, что из-за этого образуются "дырки" в массиве, т.е. как-то так:
0 - array
1 - undefined
2 - undefined
3 - array
4 - undefined
|