Javascript 缺少行的最后一个元素

Javascript 缺少行的最后一个元素,javascript,csv,highcharts,Javascript,Csv,Highcharts,我在csv文件中有数据的音调,当我试图从数据生成一个图形时,我的javascript不会读取每行的最后一个元素。我用另一个数据较少的csv文件尝试了javascript,效果很好。我知道在Java中,当您使用scanner时,有时需要添加system.out.println(“\n”),因为它有时跳过一行,所以您无法在控制台上写入输入。我的csv文件问题也是这样吗 以下是我的javascript: function f() { $(document).ready(function () {

我在csv文件中有数据的音调,当我试图从数据生成一个图形时,我的javascript不会读取每行的最后一个元素。我用另一个数据较少的csv文件尝试了javascript,效果很好。我知道在Java中,当您使用scanner时,有时需要添加system.out.println(“\n”),因为它有时跳过一行,所以您无法在控制台上写入输入。我的csv文件问题也是这样吗

以下是我的javascript:

function f() {
$(document).ready(function () {
  var arr1 = new Array();
  var arr2 = new Array();
  var arr3 = new Array();
  var dat = {};
  var options = {
    chart: {
        renderTo: 'container',
        defaultSeriesType: 'bar',
        zoomType: 'xy',
    },
    title: {
        text: 'Gene'
    },
    subtitle: {
        text: name
    },
    xAxis: {
        categories: []
    },
    legend: {
        enabled: false
    },
    yAxis: {
        title: {
            text: 'Position'
        },
        minTickInterval: 10 ,
        labels: {
            enabled: false
        }
    plotOptions: {
            series: {
                stacking: 'normal',
            }
    },
    tooltip: {
        formatter: function() {
            return 'Sample: <b>' + this.x + '</b><br/><br/>' +
            '<n>Position: <b>' + this.series.name + '</b><br/><br/>'+ 
            '<n>SNP ID: <b>' + arr2[arr1.indexOf(this.series.name)] + '</b><br/><br/>';
        }
    },
    series: []
   };
   $.get('example.asp', function(data) {
   // Split the lines
    var lines = data.split('\n');

    // Iterate over the lines and add categories or series
    $.each(lines, function(lineNo, line) {
        var items = line.split(',');
        // header line containes categories
        if (lineNo == 0) {
            $.each(items, function(itemNo, item) {
                options.xAxis.categories.push(item);
            });
        }
        // the rest of the lines contain data with their name in the first position
        else {
             var series = {
                data: []
            };
            $.each(items, function(itemNo, item) {
                var data = {};
                var hash = {};
                if (itemNo == 1) {
                    series.name = item;
                    arr1.push(item);
                }
                else if (itemNo == 0) {
                    arr2.push(item);
                }
                else //if //(itemNo < items.length-1){
                    {
                    arr3.push(item);
                    hash[item] = 1;
                    data.y = hash[item];
                    if (item === '15') {
                        data.color = 'grey';
                    }
                    else if (item === '3') {
                        data.color = 'blue';
                    }
                    else if (item === '16') {
                        data.color = 'white';
                    }
                    else {
                        data.color = 'red';
                    }

                    series.data.push(data);
              //      dat.push(series);
                }
            });
            options.series.push(series);
        //    dat.push(series);
         }
        });  

        // Create the chart
   var chart = new Highcharts.Chart(options);
});
  }); 
}
函数f(){
$(文档).ready(函数(){
var arr1=新数组();
var arr2=新数组();
var arr3=新数组();
var-dat={};
变量选项={
图表:{
renderTo:'容器',
defaultSeriesType:'bar',
zoomType:'xy',
},
标题:{
文字:“基因”
},
副标题:{
文本:名称
},
xAxis:{
类别:[]
},
图例:{
已启用:false
},
亚克斯:{
标题:{
文本:“位置”
},
minTickInterval:10,
标签:{
已启用:false
}
打印选项:{
系列:{
堆叠:“正常”,
}
},
工具提示:{
格式化程序:函数(){
返回“Sample:”+this.x+”

+ '位置:'+this.series.name+'

'+ “SNP ID:”+arr2[arr1.indexOf(this.series.name)]+”

; } }, 系列:[] }; $.get('example.asp',函数(数据){ //分道扬镳 变量行=data.split('\n'); //迭代行并添加类别或系列 $.each(行,函数)(行号,行){ var items=line.split(','); //标题行包含类别 如果(行号==0){ $。每个(项目,功能(项目编号,项目){ 选项.xAxis.categories.push(项目); }); } //其余行包含名称位于第一个位置的数据 否则{ 变量系列={ 数据:[] }; $。每个(项目,功能(项目编号,项目){ 变量数据={}; var hash={}; 如果(itemNo==1){ series.name=项目; arr1.推送(项目); } else if(itemNo==0){ arr2.推送(项目); } else//if//(itemNo
下面是我的csv文件的外观:

我试图在
jsfiddle
上重现这个问题,但一切都很好,请参见:

对于每一行,您都有x个元素,series.data包含x-2个元素,这对于您的文件来说非常好,其中每一行的开头都像
Janet,d,…
,因此前两个元素不是数据的一部分


你能告诉我问题出在哪里,或者在JSFIDLE上重新创建吗?

如果CSV文件包含那么多数据,在客户端进行CSV处理似乎不是正确的方法。那么我应该使用哪一种?JSON?你有什么建议吗?我建议在后端使用python、ruby、perl或w进行CSV处理hatever适合您的喜好,并将其存储在不使用JS的结构化数据库中。无法访问csv文件-需要权限。我支持在服务器端解析csv文件的想法。您不必将其存储在数据库中,但您的服务器解析文件的效率将高于浏览器。解析文件(我使用PHP)在后端,将json_编码的数据传递到要加载到图表中的页面。@MinSunSong,highcharts已经用主要的服务器端语言进行了移植。