如何从几个文件导入d3.csv数据?

时间:2014-06-08 10:52:53

标签: javascript d3.js

我通过这种方式从不同的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

1 个答案:

答案 0 :(得分:1)

您没有显示其他代码......

d3.csv()函数是异步的,for(s in sources){outData数组填满之前启动后的代码。这就是为什么您将其视为undefinedd3.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);
}