我是新的JS和没有太多的经验,在正则表达式玩字符串操纵。
这是我的CSV文件,以表格形式与记录的第一行作为标题,从下一行的值将出现:
Name City Country
John Chennai IN
Ken Brisban AUS
Ben NY US
我需要对象数组中的输出,如下所示:
[
{Name: 'John',City: "Chennai",Country:"IN"}
{Name: 'Ken',City: "Brisbane",Country:"AUS"}
{Name: 'Ben',City: "NY",Country:"US"}
]
我正在上传一个CSV文件,需要将这些记录保存到DB中,下面是上传CSV后将触发的代码块,我尝试使用以下代码解析CSV记录:
$scope.processFiles = function() {
//var input = document.getElementById("fileOutput");
var input = document.querySelector('input[type = "file"]')
var file = input.files[0];
var reader = new FileReader();
var output;
reader.onload = function (e) {
var csvToText = e.target.result;
output = csvToJSON(csvToText);
console.log(output);
};
reader.readAsText(file);
event.preventDefault();
}
function csvToJSON(csv) {
var lines = csv.split("\n");
var result = [];
var headers;
for (var i = 0; i < lines.length; i++) {
headers = lines[i].split("\n");
}
var cont = 0;
for (var i = 0; i < lines.length; i++) {
var obj = {};
var currentline = lines[i].split("\n");
for (var j = 0; j < headers.length; j++) {
obj[cont] = currentline[j];
}
cont++;
result.push(obj);
}
console.log(result);
//console.log(JSON.stringify(result));
//return result;
}
我得到的输出如下,即值显示在一行中,用逗号分隔,第四个数组元素不应该显示。
0: {0: "Name,City,Country"}
1: {1: "John,Chennai,IN"}
2: {2: "Ken,Brisbane,AUS"}
3: {3: "Ben,NY,USA"}
4: {4: ""}
5条答案
按热度按时间4c8rllxm1#
我已经更正了您的函数,使其返回所需格式的输出:
mpbci0fu2#
试试这个。
CodePen。(注:在CodePen中,我从HTML
div
读取CSV,因此代码中存在微小差异。)uklbhaso3#
像这样的东西应该管用
0tdrvxhp4#
这就像一个魅力:上传〉转换〉复制https://csvjson.com/csv2json
watbbzwu5#