тип данных как таблица (БД)
Привет всем.
Изучаю JS - пытаюсь спрыгнуть с 1С. Переписываю задачи с 1С на JS и хочу понять какой тип данных или связку типов вы используете когда необходим тип как таблица(как в БД). Я сделал так: 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)) } Как еще можно сделать или как правильно? И как получить итог например по "allP" - суммировать в отдельную переменную в цикле? |
Наверное, вам подойдёт массив объектов:
let db = [ {date: "somedate", value: "somevalue"}, {date: "somedate", value: "somevalue"} ] И стоит изучить методы массивов: filter, reduce, forEach, map и т.д. Как раз для суммирования подойдёт reduce. |
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) |
Спасибо.
|
Часовой пояс GMT +3, время: 10:47. |