我通过不同的 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
。
最佳答案
您没有显示其他代码...
d3.csv()
函数是异步的,并且 for(s insources){
之后的代码在 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);
}
关于javascript - 如何从多个文件中导入d3.csv数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24105410/