Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从几个文件中导入数据?_Javascript_D3.js - Fatal编程技术网

Javascript 如何从几个文件中导入数据?

Javascript 如何从几个文件中导入数据?,javascript,d3.js,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]

我从不同的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函数似乎都不能在该选项卡上工作


例如,a
d3.max(outData,函数(d){return d.value;})
return
undefined

您没有显示其他代码

d3.csv()
函数是异步的,源代码中的({在
outData
数组填充之前开始
之后的代码。这就是为什么您认为它是
未定义的
并且在
d3.csv()中是有效的
accessor函数。只有在读取所有文件时才能使用
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);
}

问题在于d3.csv的异步行为。