• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Pruebas Online
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

352
Vistas
No puedo iterar sobre mi matriz/objeto. Javascript, reaccionar nativo

Realmente no entiendo qué puede estar pasando aquí. Así que tengo una función que toma una matriz 2d y una cadena e itera a través de la matriz 2d y verifica si algún subarreglo contiene la cadena. Pero de alguna manera no puedo iterar sobre este objeto/matriz y estoy realmente confundido en cuanto a lo que realmente es. He hecho muchas iteraciones en javascript. Probé for-in, for-of (es6), C stlye (como a continuación), forEach (devolución de llamada), mapa... nada funciona.

 _makeOrUpdateCase = (arrayOfArrays, str) => { console.log(arrayOfArrays); //returns the object/array shown in image below, expected console.log(typeof(arrayOfArrays)); //object console.log(Array.isArray(arrayOfArrays)); //true - huh? is this array or object?? for (var i = 0; i < arrayOfArrays.length; i++) { console.log(arrayOfArrays[i]) //this does not work console.log(i); //nothing is printed out, as if the loop is simply ignored }

Aquí está el resultado que obtengo... puede ver que las cosas que estoy imprimiendo en el bucle no se ejecutan. Sé que javascript puede ser extraño, pero vamos, ¿qué está pasando aquí? No tengo idea de qué buscar en Google. He iterado sobre arreglos y objetos muchas veces en este código. ingrese la descripción de la imagen aquí

almost 3 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

tl; dr: Su bucle está bien, pero la matriz está vacía incluso si aparece en la consola que no lo está.

Está iniciando sesión/accediendo a la matriz antes de que se llenara. Eso es evidente por el Array[0] en la salida (que indica un arreglo de longitud 0), aunque parece tener un elemento. Esto puede suceder si tiene un proceso asincrónico, como Ajax, pero está iniciando sesión/accediendo a la matriz antes de que finalice el proceso asincrónico.

Si pasa el cursor sobre la pequeña i en la consola, le indicará que el valor se acaba de evaluar, es decir, muestra el valor que tiene la variable en el momento en que hace clic en el triángulo, no en el momento en que registra el valor en el código. Para cuando haga clic en el triángulo, es probable que el proceso asíncrono haya terminado.

Sin embargo, si usa console.log(JSON.stringify(arrayOfArrays)); en su lugar, verá que la matriz está vacía.

Aquí hay un ejemplo simple que demuestra el problema (abra la consola del navegador y expanda la matriz, funciona al menos en Chrome):

 // Open the browser console var arr = []; console.log(arr); arr.push(1,2,3);

La única solución es llamar a _makeOrUpdateCase solo después de que finalice el proceso asíncrono. Dado que no está mostrando cómo/cuándo/dónde se llama a la función, esto es todo lo que se puede decir sobre el problema.


Relacionado: ¿La consola de JavaScript de Chrome es perezosa para evaluar matrices?

almost 3 years ago · Santiago Trujillo 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda