Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

128
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!