@eldenhard2

Как сложить все значения массива по квартально?

Получилось сделать разбивку ответа от API помесячно, не выходит произвести сложение полей поквартально, при этом должен учитываться и год квартала
const monthData = this.Mileage.reduce((acc, { day, speed, distance, wagons }) => {
                    const yearMonths = day.substring(0, 7);

                    if (acc[yearMonths]) {
                        acc[yearMonths].speed += speed;
                        acc[yearMonths].distance += distance;
                        acc[yearMonths].wagons += wagons;
                    } else {
                        acc[yearMonths] = {day, speed, distance, wagons };
                    }

                    return acc;
                }, {})
              
            

                const quarterOf = (month) => {
                    if (month <= 3) {
                        return this.kvartalI.push(month)
                    } else if (month > 3 && month <= 6) {
                        return this.kvartalII.push(month)
                    } else if (month > 6 && month <= 9) {
                        return this.kvartalIII.push(month)
                    } else if (month > 9 && month <= 12) {
                        return   this.kvartalIV.push(month)
                    }
                }


Данные в следующем виде:
2021-07: {day: '2021-07-23T00:00:00', speed: 3283, distance: 3283, wagons: 1}
2021-09: {day: '2021-09-26T00:00:00', speed: 1879, distance: 1879, wagons: 1}
2022-03: {day: '2022-03-11T00:00:00', speed: 10372, distance: 15558, wagons: 3}
2022-07: {day: '2022-07-25T00:00:00', speed: 455, distance: 455, wagons: 1}
2022-09: {day: '2022-09-24T00:00:00', speed: 3720.0666666666666, distance: 18632, wagons: 11}
2022-10: {day: '2022-10-01T00:00:00', speed: 55944.81598981719, distance: 1227358, wagons: 805}
2022-11: {day: '2022-11-01T00:00:00', speed: 35877.33829052166, distance: 6621346, wagons: 5528}
2022-12: {day: '2022-12-01T00:00:00', speed: 39757.51849326638, distance: 9322141, wagons: 7258}
2023-01: {day: '2023-01-01T00:00:00', speed: 16726.83149608712, distance: 1022607, wagons: 794}
  • Вопрос задан
  • 60 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
добавить поле квартала: год-квартал, что-то типа
data.map(({ day, ...rest }) => {
  const quarter = ['I', 'II', 'III', 'IV'][Math.floor((+day.substring(5, 7) - 1) / 3)];
  const year = day.substring(0, 4);
  const hash = `${year}-${quarter}`; // "2022-IV"
  return { hash, day, ...rest };
})
Результат
[
  {
    "hash": "2021-III",
    "day": "2021-07-23T00:00:00",
    "speed": 3283,
    "distance": 3283,
    "wagons": 1
  },
  {
    "hash": "2021-III",
    "day": "2021-09-26T00:00:00",
    "speed": 1879,
    "distance": 1879,
    "wagons": 1
  },
  {
    "hash": "2022-I",
    "day": "2022-03-11T00:00:00",
    "speed": 10372,
    "distance": 15558,
    "wagons": 3
  },
  {
    "hash": "2022-III",
    "day": "2022-07-25T00:00:00",
    "speed": 455,
    "distance": 455,
    "wagons": 1
  },
  {
    "hash": "2022-III",
    "day": "2022-09-24T00:00:00",
    "speed": 3720.0666666666666,
    "distance": 18632,
    "wagons": 11
  },
  {
    "hash": "2022-IV",
    "day": "2022-10-01T00:00:00",
    "speed": 55944.81598981719,
    "distance": 1227358,
    "wagons": 805
  },
  {
    "hash": "2022-IV",
    "day": "2022-11-01T00:00:00",
    "speed": 35877.33829052166,
    "distance": 6621346,
    "wagons": 5528
  },
  {
    "hash": "2022-IV",
    "day": "2022-12-01T00:00:00",
    "speed": 39757.51849326638,
    "distance": 9322141,
    "wagons": 7258
  },
  {
    "hash": "2023-I",
    "day": "2023-01-01T00:00:00",
    "speed": 16726.83149608712,
    "distance": 1022607,
    "wagons": 794
  }
]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы