Рассчитать сумму всех длительностей всех объектов в массиве, используя момент js - PullRequest
1 голос
/ 24 марта 2020

Я получаю массив объектов, все они имеют длительность поля, то есть строку; Пример объекта:

  {
    id: 14070
    project: {id: 87, name: "Test project for time tracking"}
    issue: {id: 10940}
    user: {id: 107, name: "Alexander Kirillov"}
    activity: {id: 9, name: "Development"}
    hours: 0.01
    comments: "RARA"
    spent_on: "2020-03-23"
    created_on: "2020-03-23T14:58:18Z"
    updated_on: "2020-03-23T14:58:26Z"
    custom_fields: (2) [{…}, {…}]
    start: "Mon, 23rd Mar"
    duration: "00:01" // HH:mm
    __proto__: Object
    }

имя массива: timeEntries = [{}, {}, ...]; Как я могу рассчитать сумму всех длительностей всех объектов в timeEntries, используя момент js? Спасибо вперед !!!

Ответы [ 2 ]

3 голосов
/ 24 марта 2020

Вы можете достичь этого следующим образом:

const timeEntries = [{
    duration: "00:01"
  },
  {
    duration: "01:00"
  },
  {
    duration: "12:30"
  }
];

const totalDurations = timeEntries.slice(1)
  .reduce((prev, cur) => {
      return prev.add(cur.duration);
    },
    moment.duration(timeEntries[0].duration));

console.log(`Total duration is: ${moment.utc(totalDurations.asMilliseconds()).format("HH:mm")}`);
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
1 голос
/ 24 марта 2020

Я нашел решение:

const totalDurations = durations.split(1).reduce(
  (prev, cur) => moment.duration(cur).add(prev),
  moment.duration(durations[0])
).format("HH:mm");
...