Javascript 如何从tsv文件映射数据?

Javascript 如何从tsv文件映射数据?,javascript,arrays,json,csv,Javascript,Arrays,Json,Csv,我有一个将tsv文件转换为json的函数,但我想在json输出中创建键值对。tsvJSON函数返回json,但我想格式化为特定的结构 文件 Row ID O ID O Date Ship Date Ship Type Customer ID Customer Name Seg Country City State Zip Code Region Product ID Category Sub-Category Product Name

我有一个将tsv文件转换为json的函数,但我想在json输出中创建键值对。tsvJSON函数返回json,但我想格式化为特定的结构

文件

Row ID  O ID    O Date  Ship Date   Ship Type   Customer ID Customer Name   Seg Country City    State   Zip Code    Region  Product ID  Category    Sub-Category    Product Name    Sales   Quantity    Discount    Profit
1   PA-152156   11/9/20 01/19/16    Second Class    CG-125  Clay bute   Consumer    United States   Henderson   Kentucky    42420   South   FUR-BO-10001798 Furniture   Bookcases   Bush, Somerset Collection Bookcase? 261.96  2   0   41.9136
main.js

  const tsvFileData = fs.readFileSync('./filename1.tsv');
    const jsonRes = tsvJSON(tsvFileData.toString());
    const fs = require('fs');
    function tsvJSON(tsv){

      var lines=tsv.split("\n");

      var result = [];

      var headers=lines[0].split("\t");

      for(var i=1;i<lines.length;i++){

          var obj = {};
          var currentline=lines[i].split("\t");

          for(var j=0;j<headers.length;j++){
              obj[headers[j]] = currentline[j];
          }

          result.push(obj);

      }

      return result; //JSON
    }
const fs = require('fs');

const splitBy = ';'

function tsvJSON(tsv){

    var lines=tsv.split("\n");

    var result = [];

    var headers=lines[0].split(splitBy);

    for(var i=1;i<lines.length;i++){

        var obj = {};
        var currentline=lines[i].split(splitBy);

        for(var j=0;j<headers.length;j++){
            obj[headers[j]] = currentline[j];
        }

        result.push(obj);

    }

    return result; //JSON
}

const tsvFileData = fs.readFileSync('./filename1.tsv');
const jsonRes = tsvJSON(tsvFileData.toString());
console.log(jsonRes)
预期产量

[{
    "Row ID": 1,  "O ID":"PA-152156","O Date":"11/9/20"  , "Ship Date": "01/19/16", and rest of the fields mapping 
}]

它不起作用,因为您的tsv文件格式不正确,所以标题总数没有按预期返回

让我们假设这个文件被“分号”分隔,下面的示例将起作用

filename1.tsv

ID;NAME;PHONE_NUMBER
1;WILLIAN;(11)98550-3485
main.js

  const tsvFileData = fs.readFileSync('./filename1.tsv');
    const jsonRes = tsvJSON(tsvFileData.toString());
    const fs = require('fs');
    function tsvJSON(tsv){

      var lines=tsv.split("\n");

      var result = [];

      var headers=lines[0].split("\t");

      for(var i=1;i<lines.length;i++){

          var obj = {};
          var currentline=lines[i].split("\t");

          for(var j=0;j<headers.length;j++){
              obj[headers[j]] = currentline[j];
          }

          result.push(obj);

      }

      return result; //JSON
    }
const fs = require('fs');

const splitBy = ';'

function tsvJSON(tsv){

    var lines=tsv.split("\n");

    var result = [];

    var headers=lines[0].split(splitBy);

    for(var i=1;i<lines.length;i++){

        var obj = {};
        var currentline=lines[i].split(splitBy);

        for(var j=0;j<headers.length;j++){
            obj[headers[j]] = currentline[j];
        }

        result.push(obj);

    }

    return result; //JSON
}

const tsvFileData = fs.readFileSync('./filename1.tsv');
const jsonRes = tsvJSON(tsvFileData.toString());
console.log(jsonRes)
const fs=require('fs');
常量splitBy=';'
函数tsvJSON(tsv){
var lines=tsv.split(“\n”);
var结果=[];
var headers=行[0]。拆分(splitBy);

对于(var i=1;ipattern“\t”将不适用于您的tsv文件。请参阅此处@supercol实现此目的的正确方法可以共享一个示例?我尝试了拆分(/\s\s/),它正在做一些接近预期结果的事情