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

197
Vistas
Cómo leer una línea aleatoria de un archivo txt nodejs

Tengo un archivo txt con alrededor de 5000 líneas, me gustaría imprimir una línea aleatoria de ese archivo. Intenté usar readline pero no puedo averiguar cómo elegir qué línea imprimir usando números enteros. ¿Cuál sería la forma más rápida de hacer esto sin usar mucha memoria?

Aquí está mi código

 const readline = require("readline"); const fs = require("fs"); const file = readline.createInterface({ input: fs.createReadStream('file.txt'), output: process.stdout, terminal: false }); file.on('line', (line) => { console.log(line); })
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

La solución directa sería:

  1. leer archivo
  2. dividir por \n, guardar en matriz
  3. obtener el número de líneas (== longitud de la matriz)
  4. generar un número aleatorio entre 0 y el número de líneas
  5. matriz de retorno [número_generado]

Pero podría usar bastante memoria si su archivo es realmente grande.

así que sin leer todo el archivo, en la parte superior de mi cabeza: tal vez busque una posición aleatoria, luego lea hasta que presione \n, y luego vuelva a leer hasta \n, luego divida por \n y elija la parte media de la matriz ?

Nota: esto se romperá si la última línea no es seguida por una nueva línea. (si la posición aleatoria está en las dos últimas líneas)

about 4 years ago · Juan Pablo Isaza Denunciar

0

dos enfoques aquí:

  1. lea todo el archivo, elija un número aleatorio entre 1 y 5000 y devuelva esa línea (no es bueno para una solución general)
  2. predefina una línea aleatoria y devuélvala al llegar a esa línea.
 const readline = require("readline"); const fs = require("fs"); const file = readline.createInterface({ input: fs.createReadStream('file.txt'), output: process.stdout, terminal: false }); const radnomLineNumber = getRandomInt(5000); let i = 0; file.on('line', (line) => { if (randomLineNumber === i) { console.log(line); return; } i++; });
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