У меня есть многомерный массив, первая позиция которого - объект Date (). Ранее я сократил расположение, группируя его по дням. Я пытаюсь уменьшить каждый суточный под-массив с результатами вычитания нечетных позиций ("SALIDA") пар ("ENTRADA").
Это данные:
const arrayHoras = [
[
"Thu Jan 02 2020 08:25:38 GMT+0100 (CET)",
"ENTRADA",
"NOMBRE APELLIDO APELLIDO"
],
[
"Thu Jan 02 2020 13:30:43 GMT+0100 (CET)",
"SALIDA",
"NOMBRE APELLIDO APELLIDO"
],
[
"Thu Jan 02 2020 15:18:06 GMT+0100 (CET)",
"ENTRADA",
"NOMBRE APELLIDO APELLIDO"
],
[
"Thu Jan 02 2020 18:12:22 GMT+0100 (CET)",
"SALIDA",
"NOMBRE APELLIDO APELLIDO"
],
[
"Fri Jan 03 2020 08:35:38 GMT+0100 (CET)",
"ENTRADA",
"NOMBRE APELLIDO APELLIDO"
],
[
"Fri Jan 03 2020 10:15:23 GMT+0100 (CET)",
"SALIDA",
"NOMBRE APELLIDO APELLIDO"
],
[
"Fri Jan 03 2020 10:59:16 GMT+0100 (CET)",
"ENTRADA",
"NOMBRE APELLIDO APELLIDO"
],
[
"Fri Jan 03 2020 12:25:01 GMT+0100 (CET)",
"SALIDA",
"NOMBRE APELLIDO APELLIDO"
],
[
"Fri Jan 03 2020 12:31:33 GMT+0100 (CET)",
"ENTRADA",
"NOMBRE APELLIDO APELLIDO"
],
[
"Fri Jan 03 2020 13:20:43 GMT+0100 (CET)",
"SALIDA",
"NOMBRE APELLIDO APELLIDO"
],
[
"Fri Jan 03 2020 15:28:06 GMT+0100 (CET)",
"ENTRADA",
"NOMBRE APELLIDO APELLIDO"
],
[
"Fri Jan 03 2020 18:32:10 GMT+0100 (CET)",
"SALIDA",
"NOMBRE APELLIDO APELLIDO"
],
[
"Tue Jan 07 2020 08:31:46 GMT+0100 (CET)",
"ENTRADA",
"NOMBRE APELLIDO APELLIDO"
],
[
"Tue Jan 07 2020 13:22:51 GMT+0100 (CET)",
"SALIDA",
"NOMBRE APELLIDO APELLIDO"
],
[
"Tue Jan 07 2020 15:30:00 GMT+0100 (CET)",
"ENTRADA",
"NOMBRE APELLIDO APELLIDO"
],
[
"Tue Jan 07 2020 17:22:29 GMT+0100 (CET)",
"SALIDA",
"NOMBRE APELLIDO APELLIDO"
],
[
"Tue Jan 07 2020 17:31:59 GMT+0100 (CET)",
"ENTRADA",
"NOMBRE APELLIDO APELLIDO"
],
[
"Tue Jan 07 2020 18:32:30 GMT+0100 (CET)",
"SALIDA",
"NOMBRE APELLIDO APELLIDO"
]
];
Первый шаг : мы группируем 2D-схему по дням первой позиции каждого элемента
const gruposDias = arrayHoras.reduce((acumulador, valorActual) => {
const dia = new Date(valorActual[0]).getDate();
if (!acumulador[dia]) {
acumulador[dia] = [];
}
acumulador[dia].push(valorActual);
return acumulador;
}, []);
const agrupadosPorDia = Object.keys(gruposDias).map(porDia => {
return gruposDias[porDia];
});
Второй шаг : I попытайтесь уменьшить сгруппированные по дням меры, вычитая секунды, прошедшие между датами нечетных позиций ("SALIDA") и четных ("ENTRADA"):
const entradas = [];
const salidas = [];
for (let i = 0; i < agrupadosPorDia.length; i += 1) {
const agrupadosPorDiaI = agrupadosPorDia[i];
for (let j = 0; j < agrupadosPorDiaI.length; j += 1) {
if (j % 2) {
const salidaTime = new Date(agrupadosPorDia[i][j][0]).getTime();
salidas.push(salidaTime);
rowSalida.push((ultRowConDatoSimulado += 2));
} else {
const entradaTime = new Date(agrupadosPorDia[i][j][0]).getTime();
entradas.push(entradaTime);
}
}
}
console.log("entradas: ", entradas);
console.log("salidas: ", salidas);
Моя проблема : со вторым шагом я теряю возвращенные массивы "entradas" и "salidas" в каждом подмассиве 2D-массива, сгруппированного по дням.
Есть ли у кого-нибудь доброта к пролить свет на мою работу с декодером?.
И, злоупотребляя своими знаниями, можете ли вы избежать второго шага, расширив массив двумерного массива, увеличивая методы limit () и map () ?. Я пробовал все, я думаю.
Обновление
Ожидаемый результат
agrupadosPorDia: [
[
[ "05:05:05" ],
[ "02:54:16" ]
],
[
[ "02:54:16" ],
[ "01:39:45" ],
[ "01:25:45" ],
[ "00:49:10" ],
[ "03:04:04" ]
],
[
[ "04:51:05" ],
[ "01:52:29" ],
[ "01:00:31" ],
]
];