Búsqueda de sitios web

javascript - Leer archivo de texto en un arreglo de objetos en Typescript


Quiero convertir los datos de mi archivo de texto en un arreglo de objetos, aquí están mis datos en el archivo de texto:

DOCNO   NETAMOUNT   IREF1   IREF2   DOCDT
001 30000   50  100 6/7/2020
2   40000   40  90  6/7/2020

Aquí está mi código hasta ahora:

  reader.onload = (ev)=>{
        const data = reader.result;
        var txtData = data.toString()
        console.log(data,"txt data")
        var lines = txtData.split(' ');
        for(var line = 0; line < lines.length; line++){
            console.log(lines[line]);
        }
    
     };
    
     reader.readAsText(file)
}

Quiero convertirlo en un formato como este:

0: {DOCNO: "001", NETAMOUNT: "30000", IREF1: "50", IREF2: "100", DOCDT: "6/7/20"}

1: {DOCNO: "2", NETAMOUNT: "40000", IREF1: "40", IREF2: "90", DOCDT: "6/7/20"}

Respuesta #1

Puedes usar regex para dividir los datos por línea nueva. Después de eso, divide cada línea por espacios para obtener las palabras. Finalmente, asigna todos los datos al encabezado correcto con reduce().

const fakeFile = `
  DOCNO   NETAMOUNT   IREF1   IREF2   DOCDT
  001 30000   50  100 6/7/2020
  2   40000   40  90  6/7/2020
`;

// Split data by newline character
const lines = fakeFile.trim().split(/\n/g);

// Split data by spaces (one or more)
const wordsPerLine = lines.map(line => line.trim().split(/\s+/g));

// First line are the headings
const headings = wordsPerLine.shift();

// Combine lines with heading
const result = wordsPerLine.reduce((all, line) => {
  const obj = {};
  
  line.forEach((word, index) => {
    obj[headings[index]] = word;
  });
  
  all.push(obj);
  
  return all;
}, []);

console.log(result);