es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Contar líneas duplicadas de un archivo utilizando node.js

Tengo que leer un archivo .csv grande línea por línea, luego tomar la primera columna del archivo que son los países y contar duplicados.
Por ejemplo, si el archivo contiene:

USA
UK
USA

La salida debería ser:

USA – 2
UK – 1

Código:

const fs = require(‘fs’)
const readline = require(‘readline’)

const archivo = readline.createInterface({
input: fs.createReadStream(‘archivo.csv’),
output: process.stdout,
terminal: false
})

archivo.on(‘linea’, linea => {
const pais = linea.split(“,”, 1)
const numero = ??? // no sé cómo verificar duplicados
const resultado = pais + numero

if(contadorLineas >= 1 && pais != `""`) {
    console.log(resultado)
}
contadorLineas++

})

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para contar los duplicados, puedes crear un objeto para almacenar la cantidad de veces que aparece cada país.

    Aquí te mostramos cómo puedes modificar el código:

    const fs = require('fs')
    const readline = require('readline')
    
    const file = readline.createInterface({
      input: fs.createReadStream('file.csv'),
      output: process.stdout,
      terminal: false
    })
    
    const countryCount = {}
    
    file.on('line', line => {
      const country = line.split(",")[0]
      if(countryCount[country]) {
        countryCount[country]++
      } else {
        countryCount[country] = 1
      }
    })
    
    file.on('close', () => {
      for(let country in countryCount) {
        console.log(`${country} - ${countryCount[country]}`)
      }
    })
    

    Aquí, creamos un objeto countryCount para almacenar las cantidades de cada país. Dividimos la línea usando , como separador para obtener el país y aumentamos la cuenta en countryCount si ya existe, de lo contrario establecemos la cuenta en 1.

    Finalmente, después de leer todas las líneas, recorremos countryCount e imprimimos el país y su cantidad. El evento close se utiliza para asegurar que todas las líneas se hayan leído antes de imprimir las cantidades.

Comments are closed.