>我正在尝试读取一些csv数据,选择一个特定的列(SST),并创建一个数组,其中每个项目是:{ x:row#,y:SST_for_that_row }。
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>
var dat=[];
d3.csv("stratus2.txt", function(t) {
dat = t;
});
f=dat.map(function(d,i) {
return {x:i,y:d.SST}
</script>
我的 Firefox 控制台显示"dat"变量已成功加载,但"f"为空。 但是,如果我直接在控制台中键入以下内容,它会加载正常。
f=dat.map(function(d,i) {
return {x:i,y:d.SST}
是否存在某种范围界定问题?提前感谢,本
我认为您在保留地图并返回 csv 回调时遇到了问题。 正在发生的事情是你的csv
代码还没有完成(dat 没有设置为 t),但回调不会阻塞(d3.csv() 是异步的),所以你的 javascript 继续运行,留下一个空的映射。
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>
var dat=[];
d3.csv("stratus2.txt", function(t) {
dat = t;
f=dat.map(function(d,i) {
return {x:i,y:d.SST};
});
});
</script>
尝试这种方式,并查看Javascript同步与异步以获取更多信息。
这在控制台中起作用的原因是,当您输入这些代码行时,您的回调已经处理完毕,因此dat
确实具有分配的值。