Есть массив, состоящий из целых чисел, например:
let arr = [20,1659,710,710,1730,1808,2043,1613,1841,1328,504,1730,2545,493,879,1441,2043,1613,710,1613,1250]
В нем есть дубликаты. Иногда это только один дубликат, иногда 10.
Каждый дубликат должен идти на 1 больше, чем прежний.
То есть, если у меня есть 710 + 710 + 710, это должно быть 710 + 711 + 712.
Мне нужно избавится от дубликатов путем инкрементирования и потом весь массив просуммировать.
Я сделал уже функцию, но она работает только если есть один дубликат. Если есть несколько, они будет суммировать прежний, то есть 710 + 710 + 710 = 710 + 711 + 711.
function getMinimumUniqueSum(arr) {
const duplicateValues = arr.filter((e, i, a) => a.indexOf(e) !== i);
const uniqueValues = arr.filter((e, i, a) => a.indexOf(e) === i);
const newArr = [...uniqueValues, ...incrementedValues];
return newArr.reduce((a, b) => a + b, 0);
}
getMinimumUniqueSum(arr)
выдаёт 28269, а должно 28291.