Есть ли способ преобразовать данные CSV в массив значений - PullRequest
0 голосов
/ 06 мая 2019

Я добавил ссылку jsfiddel. Что я пробовал до сих пор. Любая помощь будет оценена. Спасибо тебе

function onFileSelect(input) {
  //this.itemHeaderName = itemHeaderName;
  var files = input.files;
  var csvData;
  if (files && files.length) {
    var fileToRead = files[0];
    var fileReader = new FileReader();
    fileReader.readAsText(fileToRead, 'UTF-8');
    fileReader.onloadend = function(x) {
      csvData = fileReader.result;
      onFileLoad(csvData);
    }

  }
}

function onFileLoad(fileLoadedEvent) {
  var csvSeparator = ',';
  var textFromFileLoaded = fileLoadedEvent;
  var csv = [];
  var rows = textFromFileLoaded.split('\n');

  _.forEach(rows, function(element) {
    var col = [];
    col = element.split(csvSeparator);
    csv.push(col);
  });
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.4/lodash.min.js"></script>

<input id="uploadFile_hier" type="file" class="upload" onclick="onFileSelect(event.target)" multiple="false" />

Данные файла CSV:

Part    Property    Level   Comments
Mercury Sub 2   TOP,Bottom,5678
copper  Material    1   KM
Iron    Thickness   4   NA,KA

Результат:

\["part", "Property", "Level", "Comments"\]
\["Mercury", "Sub-Compound", "2", ""TOP", "NOZZLE", "BLOCK", "9100""\]
\["copper", "Material", "1", "KM"\]
\["Iron", "Thickness", "4", ""NA", "KA""\]

Ожидаемое:

\["part", "Property", "Level", "Comments"\]
\["Mercury", "Sub-Compound", "2", "TOP,NOZZLE,BLOCK,9100"\]
\["copper", "Material", "1", "KM"\]
\["Iron", "Thickness", "4", "NA,KA"\]][1]

https://jsfiddle.net/eswar786/t5mpojr2/

1 Ответ

1 голос
/ 06 мая 2019
rows.forEach(element => {
if (element.indexOf('"') >= 0) {
const str = element.slice(element.indexOf('"'), element.length);
const str1 = element.slice(0,element.indexOf('"'));
element = str1 + str.replace(/[',]+/g, '-');
} 

внутри цикла берут каждое значение из массива и выясняют, где встречаются двойные кавычки, затем заменяем его на -

...