Estoy trabajando con algunos datos de HRV que tengo almacenados en Arrays en Nodejs. Sin embargo, cada vez que quiero acceder a un valor almacenado en dicha matriz, aparece como "indefinido". La matriz que me gustaría leer es generada por este código:
let rr_data = [456,782,365,234,783,456,987,456,782,365,234,783,456,987,456,782,365,234,783,456,987] let t = [] rr_data.reduce((current, next, i) => { return t[i] = current + next }) Cuando ahora registro en la consola "t" ( console.table(t) ) aparece así: 
Sin embargo, cada vez que intento acceder a un elemento por sí mismo, por ejemplo console.log(t.at(0)) o console.log(t[0]) , aparece como "indefinido". ¿Por qué sucede eso y cómo puedo prevenirlo?
¡Gracias por tu ayuda!
Cuando llama a reduce sin ningún valor inicial para el acumulador (es decir, sin un segundo argumento), comienza llamando a su devolución de llamada con los dos primeros valores de la matriz y el índice establecido en 1 . Entonces i en su código, en la primera devolución de llamada, con be 1 , no 0 , y nunca asignará a t[0] , por lo que permanecerá undefined . (También generaría un error si su matriz no tuviera elementos en absoluto). Esta es una de las muchas razones por las que reduce es demasiado complicado para la mayoría de los casos de uso fuera de la programación funcional con funciones reductoras predefinidas y reutilizables.
Si solo desea completar t con el resultado de combinar los elementos n y n+1 de su matriz de origen, probablemente su mejor apuesta sea un ciclo simple:
for (let index = 0; index < rr_data.length; index += 2) { const next = rr_data[index + 1] ?? 0; // In case that's past the end t.push(rr_data[index] + next); }Ejemplo en vivo:
let rr_data = [456,782,365,234,783,456/*...*/]; let t = []; for (let index = 0; index < rr_data.length; index += 2) { const next = rr_data[index + 1] ?? 0; // In case that's past the end t.push(rr_data[index] + next); } console.log(t);No hay nada malo aquí.
En Array.reduce() puede pasar un valor inicial. Su problema es que su valor inicial no está definido, por eso t[0] no es un número.
Si cambia su código a esto, debería funcionar:
let rr_data = [456,782,365,234,783,456,987,456,782,365,234,783,456,987,456,782,365,234,783,456,987] let t = [] rr_data.reduce((current, next, i) => { return t[i] = current + next }, 0) console.log(t) console.log(t[0]) let arr = [456, 782, 365, 234, 783, 456, 987, 456, 782, 365, 234, 783, 456, 987, 456, 782, 365, 234, 783, 456, 987]; let t = []; arr.forEach ((item, i) => { if (i != arr.length-1) { t[i] = arr[i+1] + arr[i]; } });