Estoy tratando de almacenar los valores que corresponden a los domingos y sábados del mes actual en una matriz ( arr ) y mostrarlos en la consola, la variable 'd' representa la cantidad de días del mes actual.
Cuando trato de mostrar un valor específico como console.log(arr[1]) muestra "indefinido" en la consola.
let arr = []; console.log(arr); console.log(arr[0]); const renderDay = () => { let td = []; for (let i = 1; i <= d; i++) { if ( days[i].toLocaleDateString("fr-FR", options).slice(0, 3) === "sam" || days[i].toLocaleDateString("fr-FR", options).slice(0, 3) === "dim" ) { td.push( <td className="test" key={i}> {days[i].toLocaleDateString("fr-FR", options).slice(0, 3)} </td> ); arr.push(i); } else td.push( <td key={i}> {days[i].toLocaleDateString("fr-FR", options).slice(0, 3)} </td> ); } return td; }; Quería verificar si la matriz está vacía, así que muestro la matriz completa con console.log(arr) , la salida se ve bien, muestra una matriz con longitud: 8 arr = {0: 6 , 1: 7 , 2: 13 , 3: 14 , 4: 20 , 5: 21 , 6: 27 , 7: 28} , que representa el índice de sábados y domingos del mes actual, pero no puedo acceder a cada valor específico por índice.
¿Cómo puedo acceder a cada valor específico por su índice ( arr[0] , arr[1] , arr[2] ....)?
Creo que está llamando a console.log demasiado pronto. console.log(arr) solo funciona, porque se registra una referencia a esa matriz, que se actualiza tan pronto como se ejecuta renderDay . Consulte MDN aquí: documentación de console.log
Tenga en cuenta que si registra objetos en las últimas versiones de Chrome y Firefox, lo que registra en la consola es una referencia al objeto, que no es necesariamente el "valor" del objeto en el momento en que llama a la consola. log(), pero es el valor del objeto en el momento en que abre la consola.
Intente registrar arr[0] después de llamar a renderDay en algún lugar de su código.
También puede intentar reemplazar console.log(arr) con console.log(arr.toString()) para obtener el valor que tiene arr en el momento exacto en que lo registra; debe estar vacío cuando se llama antes de que se ejecute renderDay .