Javascript 将数据从csv复制到D3中的数组中
我知道以前有人问过这个问题,但出于某种原因,他们的解决方案似乎对我不起作用 我试图用CSV文件中的数据填充两个阵列,其中:Javascript 将数据从csv复制到D3中的数组中,javascript,arrays,csv,d3.js,Javascript,Arrays,Csv,D3.js,我知道以前有人问过这个问题,但出于某种原因,他们的解决方案似乎对我不起作用 我试图用CSV文件中的数据填充两个阵列,其中: name,value alpha,34 beta,12 delta,49 gamma,89 我现在尝试的是 var field1=[]; var field2=[]; d3.csv("data.csv",function(csv){ csv.map(function(d){ field1.push(d.name);
name,value
alpha,34
beta,12
delta,49
gamma,89
我现在尝试的是
var field1=[];
var field2=[];
d3.csv("data.csv",function(csv){
csv.map(function(d){
field1.push(d.name);
field2.push(+d.value);
})
});
console.log("field1",field1);
console.log("field2",field2);
当我在浏览器上查看console时,我看到:
field1数组[]
field2数组[]
其中:
field1:
Array[0]
0:"alpha"
1:"beta"
2:"delta"
3:"gamma"
field2:
Array[0]
0:34
1:12
2:49
3:89
但是,当我尝试访问字段1[0]时,我得到的值为未定义
field1 undefined
我猜发生的是field1数组有一个“name”列的数组,但我也无法通过字段[0][0]访问第一个元素。我得到的是:
TypeError: field1[0] is undefined
我对JavaScript非常陌生,我似乎不明白为什么数组不能作为一维数组正确填充,或者我是否做错了什么。我知道我可以在访问每行csv时遍历每行,但我希望将csv值存储在数组中,以便在脚本中全局使用
我浏览过的链接有:
d3.csv("data.csv",function(csv){
是一个ajax调用,因此您无法编写以下内容(您的控制台日志在ajax完成之前被调用,因此您会得到意外的结果):
正确的方法是:
var field1=[];
var field2=[];
d3.csv("data.csv",function(csv){
csv.map(function(d){
field1.push(d.name);
field2.push(+d.value);
})
//called after the AJAX is success
console.log("field1",field1);
console.log("field2",field2);
console.log("field1",field1[0]);
});
工作代码
希望这有帮助 这管用!但是,是否不可能在csv读取之外以某种方式存储此数据,以便执行诸如连接多个csv文件中的数据并对其进行可视化处理之类的操作?如果不嵌套,您可以检查此答案或使用d3队列加载多个csv是,此解决方案是正确的,但不可扩展,如果您需要对CSV数据执行20或30次操作,则会导致无法读取的代码。愚蠢的异步方法!一定有更好的方法。。。
var field1=[];
var field2=[];
d3.csv("data.csv",function(csv){
csv.map(function(d){
field1.push(d.name);
field2.push(+d.value);
})
//called after the AJAX is success
console.log("field1",field1);
console.log("field2",field2);
console.log("field1",field1[0]);
});