Javascript 缺少行的最后一个元素
我在csv文件中有数据的音调,当我试图从数据生成一个图形时,我的javascript不会读取每行的最后一个元素。我用另一个数据较少的csv文件尝试了javascript,效果很好。我知道在Java中,当您使用scanner时,有时需要添加system.out.println(“\n”),因为它有时跳过一行,所以您无法在控制台上写入输入。我的csv文件问题也是这样吗 以下是我的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 () {
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已经用主要的服务器端语言进行了移植。