【问题标题】:Reading *.csv file using JavaScript使用 JavaScript 读取 *.csv 文件
【发布时间】:2016-03-28 23:21:00
【问题描述】:

我有一个 csv 文件,其数据格式如下:

2001:200::,2001:200:ffff:ffff:ffff:ffff:ffff:ffff,
42540528726795050063891204319802818560,42540528806023212578155541913346768895,JP,,,36.0000,138.0000,,0,0

2001:208::,2001:208:ffff:ffff:ffff:ffff:ffff:ffff,
42540529360620350178005905068154421248,42540529439848512692270242661698371583,SG,,,1.3667,103.8000,,0,0

我只想解析第一个逗号(IPv6 地址)之后的项目,以及该记录的 lat/long(第一条记录中的 36.0000,138.0000)值。

如何使用 JavaScript/jQuery 来做到这一点?

【问题讨论】:

标签: javascript jquery parsing csv


【解决方案1】:

使用 split 方法将字符串转换为数组,然后根据需要遍历它。

var csv = "2001:200::,2001:200:ffff:ffff:ffff:ffff:ffff:ffff,4254052872679505006389120431980\n2818560,42540528806023212578155541913346768895,JP,,,36.0000,138.0000,,0,0"; 
var myArray = csv.split("\n");//You should know what kind of new line your csv is using
myArray.map(function (e) { //Applies this function over each element of myArray that is each line of your csv
 var line = e.split(","); //Turn the comma separated string into an array
 return "The second element is: " + line[1]; //Do what you need
});

【讨论】:

    【解决方案2】:

    嗯,就像使用任何语言一样。首先你打开文件。逐行阅读。用逗号分割每一行。使用数组的索引来获取你想要的值。

    jQuery.get('file.csv', function(data) {
       alert(data); // this is a line
       var tempArray = data.split(','); // array of data
       for(var i = 0; i < tempArray.length; i++)
       {
           console.log(tempArray[i]); // probably index 1 is your IPv6 address.
       }
    });
    

    【讨论】:

    • 没有.Split().Length。我修正了你的错别字
    • 大声笑。谢谢。我更新了它。在我发布这些 xD 之前,我真的应该把它输入到 IDE 中。我习惯了 C#...
    • @RadleyAnaya 在拆分之前我不需要将这些数据转换为字符串吗?此外,JS 将如何拆分为 3 个逗号 - ',,,'?它会认为它是一个逗号吗?
    • @newtherapy 试试吧。打开你的浏览器控制台并输入",,,".split(","),看看你会得到什么。 (它将返回一个包含 4 个空字符串的数组)
    • @newtherapy - 是的,矢量是正确的。 .split() 方法返回一个数组。以此为例:“The, dog,,ran.”.split(',');你会得到 ["The", "dog", "", "ran."]
    【解决方案3】:

    或者只使用 CSV 库,我建议 PapaParse(Browser) 或 BabyParse(NodeJS)

    【讨论】:

      【解决方案4】:

      这就是你要做的:

      $.ajax({
          type: "GET",
          url: "data.csv",
          success: function (data) {
              var data = Papa.parse(data);
              var output = {
                  "IPv6" : data.data[0][1],
                  "coordinates" : [data.data[1][5], data.data[1][6]]
              } /* -> These are the values you're looking for! */
          }
      });
      

      因为我无法演示 AJAX(由于跨域脚本问题),我将仅演示下面的 success 函数!


      演示

      var data = '2001:200::,2001:200:ffff:ffff:ffff:ffff:ffff:ffff,'+ "\n" +
      '42540528726795050063891204319802818560,42540528806023212578155541913346768895,JP,,,36.0000,138.0000,,0,0'+ "\n\n" +
      '2001:208::,2001:208:ffff:ffff:ffff:ffff:ffff:ffff,'+ "\n" +
      '42540529360620350178005905068154421248,42540529439848512692270242661698371583,SG,,,1.3667,103.8000,,0,0';
      
      var success = function (data) {
          var data = Papa.parse(data);
          return output = {
              "IPv6" : data.data[0][1],
              "coordinates" : [data.data[1][5], data.data[1][6]]
          }
      }
      
      document.body.innerHTML = '<pre>' + JSON.stringify(success(data), null, 2) + '</pre>';
      &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/4.1.2/papaparse.js"&gt;&lt;/script&gt;

      【讨论】:

      • 您是如何将 csv 数据转换为字符串连接的 (var data = " ")
      • @newtherapy :如果您运行 $.ajax() 方法,该字符串应自动传递给 success 函数!
      猜你喜欢
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 2018-05-24
      • 1970-01-01
      • 2011-10-28
      相关资源
      最近更新 更多