Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

129
Vistas
Elementos de matriz de JavaScript indefinidos

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í: consola.mesa(t)

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!

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

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);

about 4 years ago · Juan Pablo Isaza Denunciar

0

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])

about 4 years ago · Juan Pablo Isaza Denunciar

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]; } });

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda