错过了该行的最后一个元素

时间:2013-11-26 15:57:22

标签: javascript csv highcharts

我在csv文件中有数据的音调,当我尝试从数据创建图表时,我的javascript不会读取每行的最后一个元素。我用另一个csv文件尝试了我的javascript和更少的数据,它工作正常。我知道在Java中,你有时需要在使用扫描仪时添加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);
});
  }); 
}

以下是我的csv文件的样子: link

1 个答案:

答案 0 :(得分:0)

我试图在jsfiddle上重现问题,但一切正常,请参阅:http://jsfiddle.net/ZM6A5/

对于每一行你有x个元素,series.data包含x - 2个元素,这对你的文件来说非常好,每行开头都是Janet,d, ... - 所以两个第一个元素不是数据的一部分

你能指出我的问题在哪里,或者在jsFiddle上重新创建吗?