Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.11.2021, 00:11
Аватар для awp
awp awp вне форума
Новичок на форуме
Отправить личное сообщение для awp Посмотреть профиль Найти все сообщения от awp
 
Регистрация: 18.05.2021
Сообщений: 5

тип данных как таблица (БД)
Привет всем.
Изучаю 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" - суммировать в отдельную переменную в цикле?
Ответить с цитированием
  #2 (permalink)  
Старый 09.11.2021, 09:33
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

Наверное, вам подойдёт массив объектов:

let db = [
  {date: "somedate", value: "somevalue"},
  {date: "somedate", value: "somevalue"}
]


И стоит изучить методы массивов: filter, reduce, forEach, map и т.д. Как раз для суммирования подойдёт reduce.
Ответить с цитированием
  #3 (permalink)  
Старый 09.11.2021, 09:54
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,692

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)

Последний раз редактировалось voraa, 09.11.2021 в 10:22.
Ответить с цитированием
  #4 (permalink)  
Старый 09.11.2021, 12:00
Аватар для awp
awp awp вне форума
Новичок на форуме
Отправить личное сообщение для awp Посмотреть профиль Найти все сообщения от awp
 
Регистрация: 18.05.2021
Сообщений: 5

Спасибо.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно выполнить типизацию (TypeScript) функции трансформации данных? dc65k Элементы интерфейса 2 03.05.2021 10:30
Как в wordpress в базе данных (phpMyAdmin) сделать 4000 копий одной страницы? mik888em Events/DOM/Window 1 28.10.2020 20:43
Как сделать скрипт таблица умножения с каждым разом уменьшается ilyach199012902ilyachu Элементы интерфейса 2 16.02.2020 14:45
как передать значение из js в базу данных и обратно andrey.puzanov AJAX и COMET 50 15.11.2017 21:53
Как сохранить несколько наборов данных? Infarch ExtJS 1 31.10.2014 08:14