我正在尝试将 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/