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

190
Vistas
No se puede acceder a la propiedad del objeto JavaScript desde el archivo CSV

Tengo dificultades para descubrir cómo acceder a una propiedad de mi objeto javascript.

Tengo una aplicación Node JS que descarga un archivo CSV de la OMS con datos de covid y luego recorro cada una de estas entradas. Así es como recorro cada una de las entradas CSV:

 fs.createReadStream("data.csv") .pipe(csv()) .on("data", (data) => { //process data }) .on("end", () => { });

Aquí hay una muestra de la salida cuando ejecuto console.log(data)

 { 'Name': 'Niger', 'WHO Region': 'Africa', 'Cases - cumulative total': '6203', 'Cases - cumulative total per 100000 population': '25.63', 'Cases - newly reported in last 7 days': '64', 'Cases - newly reported in last 7 days per 100000 population': '0.26', 'Cases - newly reported in last 24 hours': '10', 'Deaths - cumulative total': '205', 'Deaths - cumulative total per 100000 population': '0.85', 'Deaths - newly reported in last 7 days': '1', 'Deaths - newly reported in last 7 days per 100000 population': '0', 'Deaths - newly reported in last 24 hours': '0' }

Si ejecuto typeof data object .

Me gustaría acceder a algunas propiedades de este objeto. Si envío data["WHO Region"] obtengo "África". Así que esto funciona.


Sin embargo, no puedo acceder al nombre de esos objetos.

 console.log(data["Name"]); console.log(data.hasOwnProperty("Name"));

Salidas respectivamente undefined y false

Aunque la propiedad de nombre está presente dentro del objeto.


También he intentado listar las claves del objeto con Object.keys(data) y aquí está el resultado:

 [ 'Name', 'WHO Region', 'Cases - cumulative total', ... ]

Entonces, aparentemente, el nombre de la clave existe, pero no puedo acceder a él por alguna razón. ¿Me estoy perdiendo algo allí?

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

0

Tiene un símbolo invisible en la propiedad Name del objeto. Puede verlo si pasa el resultado de console.log en la consola del navegador:

Salida de Chrome DevTools

Verifique su archivo CSV original y busque este carácter invisible.

EDITAR: Este símbolo es ZWNBSP (Zero Width No-Break Space) al comienzo del archivo.

Carácter ZWNBSP visible en IDE

about 4 years ago · Juan Pablo Isaza Denunciar

0

El problema se debe a la marca de orden de bytes (BOM) al comienzo del archivo, representada por la secuencia de bytes 0xEF,0xBB,0xBF correspondiente al punto de código UTF-8 U+FEFF .

ingrese la descripción de la imagen aquí

Una solución fácil para su código sería reemplazar esto así:

 const results = []; fs.createReadStream('data.csv') .pipe(csv()) .on('data', (data) => { // Replace BOM in key const key1 = Object.keys(data)[0]; data = { ...data, [key1.replace(/\uFEFF/, '')]: data[key1] }; results.push(data); }) .on('end', () => { results.forEach(result => { console.log(`Name: ${result["Name"]}`); }) });

o

Puede abrir el archivo en Nodepad ++ y usar el menú Encoding , cambiarlo de UTF-8-BOM a UTF-8 y guardar.

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