У меня есть этот массив, содержащий встречи:
let appointments = [
{"appointmentId": 001239, "subject": "Something", "Client": "Bob", "StartTime": "2020-04-16T11:00:00.000Z", "EndTime": "2020-04-16T11:30:00.000Z", "km": 90},
{"appointmentId": 001240, "subject": "Something", "Client": "Alvera", "StartTime": "2020-04-16T11:00:00.000Z", "EndTime": "2020-04-16T11:30:00.000Z", "km": 50},
{"appointmentId": 001241, "subject": "Something", "Client": "Bob", "StartTime": "2020-04-17T11:00:00.000Z", "EndTime": "2020-04-17T11:30:00.000Z", "km": 30}]
Теперь я хочу суммировать километры по клиенту, например, Боб: всего: 120. Всего по итогу: 50. А также с отличиями в минутах от StartTime и EndTime. С использованием day js library я вычисляю разницу между временами. Это метод, который делает накопление км и раз. Км работает отлично, однако difference
дает NaN
. Что я делаю не так?
var result = [];
this.appointments.reduce(function (res, value) {
if (!res[value.Client]) {
res[value.Client] = {
km: 0,
Client: value.Client,
StartTime: dayjs(value.StartTime),
EndTime: dayjs(value.EndTime),
difference: dayjs(value.EndTime).diff(dayjs(value.StartTime), 'minute') % 60
};
result.push(res[value.Client])
}
res[value.Client].km += value.km;
res[value.Client].difference += value.difference; //here I try to sum the differences by Client, when I remove this line, I just see the difference of the first appointment.
return res;
}, {});