0
我正在讀取文件列表filestoplot.txt
並將它們加載到數組(datasets[fileno]
)。這些二維數組結構相似,我想計算每列(所有組合數組)的最大值和最小值,以便我可以正確建立全局d3軸。但是,我的代碼(如下所示)未正確返回gloablmax
和gloablmin
。計算數據域
var files=[];
var datasets=[],totalfiles;
var i,j,dset=1,olddset=0,maxscale=0;
var maxnecr=0;
var cols=8;
var maxvalues=[];
var globalmin=[];gloablmax=[];
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
function loadfilenames(){
d3.csv("./filestoplot.txt",
function(file){
files = file.map(function(d) { for (key in d) { fn=d[key]; } return fn; })
totalfiles=files.length;
for (i=0;i<totalfiles;i++){
datasets[i]=[];
loaddataset(i);
maxvalues[i]=[];
}
if (filesloaded==(totalfiles-1)) maxmin();
}
);
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
function loaddataset(fileno){
d3.csv(files[fileno],function(a){
console.log("loading file "+filesloaded);filesloaded++;
datasets[fileno]=a.map(function(d1) {
return [
+d1["f1"] ,
+d1["f2"] ,
+d1["f3"] ,
+d1["f4"] ,
+d1["f5"] ,
+d1["f6"] ,
+d1["f3"]/(+d1["f3"] + +d1["f5"]),
+d1["f7"]
];
}
);
}
);
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
function maxmin(){
for (j=0; j <cols; j++) {
globalmin[j]=Math.Min.apply(null,d3.extent(maxvalues,function(d){ return d[j][0]; }))
gloablmax[j]=Math.Max.apply(null,d3.extent(maxvalues,function(d){ return d[j][1]; }))
//d3.extent(maxvalues,function(d){ console.log(d[j]);});
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
</script>
<body style="max-width:90%" onload="loadfilenames();">
<script>
function changedataset(el){
console.log(el.checked)
maxmin();
}
</script>
</body>
在Chrome控制檯上,我可以看到maxvalues有正確的數據,但是最大最小顯示了這個錯誤:
「遺漏的類型錯誤:無法讀取屬性未定義‘應用’」
我對任何指針都會很有幫助。謝謝。
你說得對。只要將它改爲'Math.max'和'Math.min'解決了它。我只是沒有意識到我把它大寫了。 – user3259040 2015-02-06 20:49:15
另一個問題:何時適合自動調用maxmin()。我把它作爲hack,只是在所有數據加載後立即調用它。在for(i = 0; i
user3259040
2015-02-06 20:57:13
當你在for循環之後說,你的意思是在d3.csv回調(* for循環之後的* right *)之內,還是在它之外?如果它在回調之外,那意味着它可能在for循環之前被調用,即使它在代碼中低於它。 – 2015-02-06 21:09:21