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.

¿Existe alguna manera de leer datos de un archivo de texto y utilizar estos datos en un objeto?

Tengo un archivo txt con los nombres de las personas, me gustaría poner esos datos en un objeto de JavaScript/JSON, luego importaría ese objeto con los módulos ES6.

Estos datos se utilizarían para renderizar elementos HTML con esos datos y luego buscar en una barra de búsqueda, filtrando por nombre, sexo, etc.

Ejemplo:

archivo.txt:

hombres:
john doe
antony rewasd
nombreAleatorio apellido
…………
…………
mujeres:
hailey Coleman
mary johnson
…………
………..
………..

salida:

const people =
{
mujeres:
[
{
nombre: ‘loquesea’,
apellido: ‘________’,
sexo: ‘M’,
},
{
nombre: ‘loquesea’,
apellido: ‘________’,
sexo: ‘M’,
},
………………………..
………………………..
………………………..
],
hombres:
[
{
nombre: ‘loquesea’,
apellido: ‘________’,
sexo: ‘H’,
},
{
nombre: ‘loquesea’,
apellido: ‘________’,
sexo: ‘H’,
},
………………………..
………………………..
………………………..
]
}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para crear un objeto javascript/Json a partir de los datos en el archivo txt, puedes usar el módulo fs en Node.js para leer el archivo y procesar los datos. Aquí tienes un ejemplo de fragmento de código:

    const fs = require('fs');
    
    // leer el archivo txt
    const data = fs.readFileSync('people.txt', 'utf8');
    
    // dividir los datos por saltos de línea
    const lines = data.split(/\r?\n/);
    
    // inicializar el objeto people
    const people = { women: [], men: [] };
    
    let currentSex = '';
    for (let line of lines) {
      // comprobar si la línea está vacía o es una etiqueta de género
      if (line.trim() === '') continue;
      if (line.endsWith(':')) {
        currentSex = line.substring(0, line.length - 1).toLowerCase();
        continue;
      }
    
      // dividir el nombre en nombre y apellido
      const nameParts = line.split(' ');
      const firstName = nameParts[0];
      const lastName = nameParts.length > 1 ? nameParts.slice(1).join(' ') : '';
    
      // añadir la persona al grupo de género actual
      people[currentSex].push({ name: firstName, lastName, sex: currentSex.toUpperCase() });
    }
    
    export { people };
    

    Este código lee el archivo people.txt, divide los datos por saltos de línea y luego procesa cada línea. Primero comprueba si la línea está vacía o si es una etiqueta de género (que termina con “:”). Si es una etiqueta de género, establece la variable currentSex con el valor apropiado (“women” o “men”). Si no es una etiqueta, divide la línea por espacios para obtener el nombre y apellido, y añade la persona al grupo de género correspondiente en el objeto people.

    Finalmente, el código exporta el objeto people utilizando los módulos ES6, que se pueden importar en otro archivo para renderizar elementos HTML y filtrar/buscar por nombre o género.

Comments are closed.