我通过这种方式从不同的csv文件构建(每个文件只包含两行:列名和关联值)outData
选项卡:
var outData = new Array();
for(s in sources){
d3.csv(sources[s], function(error, data) {
outData.push({'value' : +data[0]['var']});
});
}
console.log(outData)
指令给出了我的期望:
[Object, Object]
并为每个对象提供良好的预期格式,例如{value:36}
问题是所有 d3 功能似乎都不适用于该选项卡。
例如,d3.max(outData, function(d){return d.value;})
返回undefined
。
答案 0 :(得分:1)
您没有显示其他代码......
d3.csv()
函数是异步的,for(s in sources){
在outData
数组填满之前启动后的代码。这就是为什么您将其视为undefined
和d3.csv()
访问者函数内的有效内容。只有在读取所有文件时才必须使用outData
。一种可能的解决方案:
var outData = [];
var counter = 0;
for (s in sources){
d3.csv(sources[s], function(error, data) {
counter++;
outData.push({
'value' : +data[0]['var']
});
if (counter == sources.length) {
console.log(outData);
restOfCode();
}
});
}
function restOfCode() {
console.log('restOfCode outData:');
console.log(outData);
}