Чтение текстового файла в массив объектов в Typescript - PullRequest
2 голосов
/ 13 июля 2020

Я хочу преобразовать данные из моего текстового файла в массив объектов, вот мои данные в текстовом файле:

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

Вот мой код на данный момент:

  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)
}

Я хочу преобразовать в такой формат:

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

1: {DOCNO: «2», NETAMOUNT: «40000», IREF1: «40», IREF2: «90», DOCDT: "07.06.20"}

1 Ответ

3 голосов
/ 13 июля 2020

Вы можете использовать regex , чтобы разделить данные на новую строку. После этого разделите каждую строку пробелами, чтобы получить слова. Наконец, сопоставьте все данные с правым заголовком с помощью 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...