将CSV文件转换为2D数组

Mee*_*n Z 6 javascript arrays

如何将CSV文件中的数据转换为二维数组?

array[row][column]
Run Code Online (Sandbox Code Playgroud)

我已经有一个上传脚本,可以显示CSV文件中的所有数据.

我的代码的小片段,这里是完整的代码:http://jsfiddle.net/Meesz/wj6q7c30/

reader.onload = function (e) {
  var table = document.createElement("table");
  var rows = e.target.result.split("\n");
  for (var i = 0; i < rows.length; i++) {
    var row = table.insertRow(-1);
    var cells = rows[i].split(",");
    for (var j = 0; j < cells.length; j++) {
        var cell = row.insertCell(-1);
        cell.innerHTML = cells[j];
    }
  }
  var dvCSV = document.getElementById("dvCSV");
  dvCSV.innerHTML = "";
  dvCSV.appendChild(table);
}
Run Code Online (Sandbox Code Playgroud)

Fab*_*ini 11

真正的答案:使用Papa Parse.节省转义/引用字段的麻烦,包含分隔符的字段,CSV格式的变体等等...

"自己动手"的方式: csvStr.split("\n").map(function(row){return row.split(",");})

  • DIY 方式是个坏主意。使用真正的解析器。 (2认同)

gfu*_*lam 5

使用String.split()Array.map()

因为“该map()方法创建了一个新数组,其结果是对该数组中的每个元素调用提供的函数” (源:MDN,所以它是非常适合 有点适合从一个非常基本的 CSV字符串创建二维数组,该字符串已经通过该split()方法转换为数组。

function csvToArray (csv) {
    rows = csv.split("\n");

    return rows.map(function (row) {
    	return row.split(",");
    });
};

// Hard-coded for brevity, but you can set this variable with FileReader
var csv = "the,quick,brown,fox\n" +
          "jumps,over,the,lazy,dog";

var array = csvToArray(csv);

console.log(array);
Run Code Online (Sandbox Code Playgroud)
Open your console.
Run Code Online (Sandbox Code Playgroud)

更新:

如果您的单元格包含引号,逗号或其他转义字符,则此基本解决方案将分崩离析。要处理更复杂的CSV字符串,您必须实现RegEx解决方案(请参阅“ 如何使用Java脚本解析CSV字符串?”的已接受答案)。并且要支持多种常见格式,最好只使用一个库。

  • 如果该行是“你好,你好吗”,“史密斯,约翰”,34`呢? (3认同)