Ajax CSV未定义的数组值
对于我正在工作的脚本,我不断得到一个填充’undefined’而不是实际值的数组,我有一个CSV文件,我用$ .ajax读取,我试图将整个CSV分成基于标题行的数组。
我现在的代码:
$.ajax({ type: "GET", url: "airport.txt", dataType: "text", success: function(data) { lines = processData(data); function processData(allText) { var allTextLines = allText.split(/\r\n|\n/); var headers = allTextLines[0].split(','); for (var i=1; i<allTextLines.length; i++) { var data = allTextLines[i].split(','); if (data.length == headers.length) { var tarr = []; for (var j=0; j<headers.length; j++) { tarr.push(headers[j]+":"+data[j]); } lines.push(tarr); } } lines.map(function(d){ country.push(d.headers); }); console.log(country); } } });
我认为问题出在country.push(d.headers);
我已经为d.headers
尝试了几个其他选项,例如d.lines
d.headers[0]
d.country
和d.data
。
我想要的是country
填充headers[0]
,这是headers[0]
为’国家代码’的列,但是一旦我将d.headers
更改为d.headers[0]
我得到Uncaught TypeError: Cannot read property '0' of undefined
这里出了什么问题,我怎样才能最好地按列过滤CSV文件?
编辑:
借助评论中的插件,我设法让它发挥作用。 如果有其他人遇到这个,这里是我用来使它适用于我的代码片段,它可能会更好,但我在JavaScript中并不是很先进。
$(document).ready(function(){ //Read CSV $.ajax({ type: "GET", url: "airport.txt", dataType: "text" }) .done(function(data){ //process CSV Data processCsv(data); }) .fail(function(){ alert("Error: Failed to load data"); }); }); function processCsv(data){ //Read CSV Data into multidimensional Array var array = $.csv.toArrays(data); //Put headers in own array var headers = array.splice(0,1); //Make each header its own value var headerString = headers.toString(); headers = headerString.split(','); //separate all array values var arrayString = array.toString(); array = arrayString.split(','); return { header:headers, values:array}; }