Как преобразовать txt файл загруженный через input в объекты с которыми можно работать? JavaScript

Есть txt файл, который загружается через инпут, сам txt вывожу в консоль через fileReader введите сюда описание изображения

 var res = Object.create(null)
    i.replace(/^([^=]*)(=)(.*)$/gm, (m:any, k:any, e:any, v:any) => {res[k] = e ? v : null})
    const textJSON = JSON.stringify(res, null, 2)

Пытался реализовать через такой подход, но в итоге максимум чего достиг что каждая строка помещалась в отдельный объект в виде {"ПолучательИНН":"63748576163"}, но никак не мог структурировать данные и распределить по отдельным объектам, как вы можете увидеть на скрине, документ состоит в основном из начала - "СекцияДокумент" и конец- "КонецДокумента" и задача состоит в чтобы такие данные как на скрине , объединить в один массив с ключами, ключ до знака = ( "=" как вы понимаете надо заменить на ":"), значение после либо пустое либо какое то есть, ключи можно сделать на английском при помощи .replace(), но как объединить данные из документа в один массив\объект я понять не могу.все эти изменения нужный чтобы готовый массив\объект отправить в бд. Помогите если был подобный опыт работы с TXT или подскажите куда копать. Спасибо.


Ответы (1 шт):

Автор решения: De.Minov

Вариант в лоб, если .txt будет содержать текст по типу этого:

asdasd=123123
Тест=ОАО "ОФЫВО"
123123=asdasd
ПустаяСтрока=
Не Правильный Ключ!"*№!"=фывфыв
           = фывфывфы
КонецДокумента

То скрипт вернёт объёкт

{
  "123123": "asdasd",
  "asdasd": "123123",
  "Тест": "ОАО \"ОФЫВО\"",
  "ПустаяСтрока": "",
  "Не Правильный Ключ!\"*№!\"": "фывфыв"
}

const input = document.querySelector('#input');

input.addEventListener('change', function(e) {
  const file = input.files[0];
  if(file.type === 'text/plain') {
    const reader = new FileReader();
    reader.readAsText(file);
    reader.onload = function() {
      console.info(TextToObject(reader.result));
    }
  }
});

function TextToObject(text) {
  const output = {};
  text = text.split(/\n|\r/gm);
  text.map(function(e) {
    if(e.length > 0 && /.*[^\s]=.*/g.test(e)) {
      let str = e.split('=');
      output[str[0]] = str[1];
    }
  });
  return output;
}
<input type="file" id="input">

→ Ссылка