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

128
Vistas
El objeto del mapa no establece valores después de la ejecución de la función

Tengo una función debajo donde el propósito es analizar múltiples archivos csv locales. Para cada archivo csv analizado, tomo de 1 a 5 elementos aleatorios. Dado que el analizador CSV genera los datos en una estructura de matriz anidada ( [['a'], ['b'], ['c']] ), proceso más los datos y extraigo los elementos de la matriz individuales para insertarlos en el final formación.

Mi objetivo final es actualizar los valores en el mapa de types pasando las matrices respectivas para cada una de sus claves

 let health = createHealthData(); console.log(health, 'final output') function createHealthData() { let types = new Map(); types.set('allergies', ''); types.set('medications', '') let start = 1; let limit = 5; for (let key of types.keys()) { let randNum = Math.floor(Math.random() * (limit - start + 1) + start); // Generates random numbers between start and limit let file = fs.createReadStream(path.resolve(__dirname, `${key}.csv`)) Papa.parse(file, { header: false, complete: (results) => { let first = [] let data = results.data; let final = []; for (let i = 1; i <= randNum; i++) { first.push(data[Math.floor(Math.random() * data.length)]) } first.forEach((x) => { x.forEach((y) => { final.push(y) }) }) types.set(key, final); console.log(types); } }) } return types; }

Mi función analiza y procesa bien los archivos csv, pero se niega a actualizar las claves existentes en el mapa una vez que devuelvo el mapa de types

Por ejemplo, mi salida en console.log(types) me da:

 Map(2) { allergies => ['Banana Allergy'], medications => ['Opana ER', 'Atrovent HFA'] }

que es lo que pretendo pasar de la función.

Sin embargo, al ver la variable de health después de que la función termine de ejecutarse, el resultado es:

 Map(2) {'allergies' => '', 'medications' => ''} final output

como si la línea types.set(key,final) nunca se ejecutara al final de la función. Estoy luchando por encontrar cuál es la fuente de este error y, según el alcance de la variable de types en la función, no veo dónde podría sobrescribirse.

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

0

Según entiendo, la función regresa sin esperar la devolución de llamada de Papa.parse, así que pruebe las soluciones de ¿Cómo usar Promises con PapaParse? para esperar a que finalice la devolución de llamada completa y luego devolver los tipos

about 4 years ago · Juan Pablo Isaza Denunciar

0

Parece que Papa.parse es asíncrono: https://www.papaparse.com/docs

"No devuelve nada. Los resultados se proporcionan de forma asincrónica a una función de devolución de llamada".

Dado que return types al final, aún no obtendrá los valores adecuados debido a la naturaleza asíncrona de la ejecución (es decir, los tipos de retorno ocurren primero, seguidos por la devolución de llamada completa de análisis).

Hay una pregunta similar que describe diferentes formas de manejar Papa.parse: ¿Cómo usar Promises con PapaParse?

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