for (let index = 1; index < period; index++) {
graph[index] = {
date: dateStart.setMonth(dateStart.getMonth() + 1),
sum: graph[index - 1].sum - graph[index -1].telo,
telo: olSumR / period,
com: olSumR / period * (pr/100),
allP: olSumR / period + (olSumR / period * (pr/100))
}
Непонятно, что у вас dateStart, olSumR...
Не видно, что бы они менялись.
Значит telo, com, allP будут везде одинаковые.
Как устанавливаются значения для graph[0]?
Вот это ошибка, если date должно быть датой, а не числом миллисекунд:
date: dateStart.setMonth(dateStart.getMonth() + 1),
setMonth устанавливает значение в объекте Date с которым она вызвана. Новый объект не создается. Т.е каждый раз будет меняться dateStart, все поля date будут ссылаться на него. Т.е. date у всего массива будет одинаковая.
Надо так
date: new Date(dateStart.getTime().setMonth(dateStart.getMonth() + 1))
Суммировать с помощью reduce
let sum = graph.reduce ((a, g) => a+g.allP, 0)