我正在尝试将CSV文件解析为Javascript数组,但是遇到了一个问题,对此我有些困惑。
尽管其余对象的解析都没有引号,但其中一个键在引号中,但是当我尝试Object [key]时会遇到异常
Uncaught SyntaxError: Invalid or unexpected token
我可以读取除“信息”以外的所有其他键。
我的对象看起来像这样:
Object {LGA_NAME: "DANDENONG", Lat: "-37.98862", Long: "145.21805", "Information
": "something crashed
"}
有问题的CSV文件是
https://dl.dropboxusercontent.com/u/97162408/crashdata.csv
我用来解析CSV文件的函数是
function csvToArray(csvString) {
// The array we're going to build
var csvArray = [];
// Break it into rows to start
var csvRows = csvString.split(/\n/);
// Take off the first line to get the headers, then split that into an array
var csvHeaders = csvRows.shift().split(',');
// Loop through remaining rows
for (var rowIndex = 0; rowIndex < csvRows.length; ++rowIndex) {
var rowArray = csvRows[rowIndex].split(',');
// Create a new row object to store our data.
var rowObject = csvArray[rowIndex] = {};
// Then iterate through the remaining properties and use the headers as keys
for (var propIndex = 0; propIndex < rowArray.length; ++propIndex) {
// Grab the value from the row array we're looping through...
var propValue = rowArray[propIndex];
// ...also grab the relevant header (the RegExp in both of these removes quotes)
var propLabel = csvHeaders[propIndex];
rowObject[propLabel] = propValue;
}
}
return csvArray;
}
最佳答案
问题在于您拆分字符串以获取行的方式。在* NIX系统中,行用\n
断开,但是在Windows中,行用\r\n
断开。因为CSV文件遵循Windows约定,并且您仅使用\n
拆分了行,所以最后一个键实际上是"Information\r"
。
您可以通过以下方式解决此问题:将var csvRows = csvString.split(/\n/);
替换为var csvRows = csvString.split(/\n|\r\n/);
,这样您就可以解析使用任一换行符约定的CSV文件。
关于javascript - 将CSV文件解析为Javascript数组时,引号中的键之一,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37692230/