我正在尝试将CS​​V文件解析为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/

10-11 03:55