簡體   English   中英

將數據從csv復制到D3中的數組中

[英]Copy data from csv into array in D3

我知道之前已經問過這個問題,但他們的解決方案由於某些原因不適合我。

我試圖用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);
                field2.push(+d.value);
            })
        });

console.log("field1",field1);
console.log("field2",field2);

當我在瀏覽器上查看控制台時,我看到:

field1 Array [] field2 Array []

哪里:

field1:
Array[0]
  0:"alpha"
  1:"beta"
  2:"delta"
  3:"gamma"

field2:
Array[0]
  0:34
  1:12
  2:49
  3:89

但是當我嘗試訪問field1 [0]時,我得到的值是undefined

field1 undefined

我猜想發生的事情是field1數組有一個“name”列的數組數組,但我也無法通過field [0] [0]訪問第一個元素。 我得到的是:

TypeError: field1[0] is undefined 

我是JavaScript的新手,我似乎不明白為什么數組沒有正確填充為1維數組或者我做錯了什么。 我知道我可以在每行訪問csv時遍歷每一行,但我想將csv值存儲在數組中,以便在腳本中全局使用。

我經歷的鏈接是:

但我似乎失蹤或忽視了一些東西..請幫忙!

原因是

d3.csv("data.csv",function(csv){

是一個ajax調用,所以你不能寫下面的東西(你的控制台日志在ajax完成之前調用,所以你會得到意想不到的結果)

var field1=[];
var field2=[];

d3.csv("data.csv",function(csv){
            //executed after successful loading of data
            csv.map(function(d){

                field1.push(d.name);
                field2.push(+d.value);
            })
        });
//called before the loading of AJAX call got completed
console.log("field1",field1);
console.log("field2",field2);

正確的方法是:

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]);
        });

這里工作代碼

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM