javascript - 如何从多个文件中导入d3.csv数据?

标签 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

最佳答案

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

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/

相关文章:

javascript 关闭不起作用?

javascript - d3 圆环图插值期间不需要的轮廓

javascript - d3 使用 selectAll().data().enter().append() 连续创建节点

javascript - d3.js 重置视口(viewport)位置

javascript - 日期比较在某些浏览器中不起作用 - Javascript

javascript - 使javascript函数形式特定

javascript - Angular formly - 在 templateOptions 变量上设置观察者

javascript - vue.js: `vue create` 在项目文件夹中仅创建 3 个文件(package.json、package-lock.json、README.md)

d3.js:在轴上的刻度之间对齐文本标签

javascript - D3条形图排序-需要轴标签排序逻辑解释