2014-11-24 159 views
0

用這種方式掙扎,並且有紅色的所有類似問題。d3將對象轉換爲數組

我正在使用d3庫讀取網頁上的csv。

我目前有這樣的:

d3.csv("normal.csv", function(rows) { 
    doSomethingWithRows(rows); 
    }); 

    function doSomethingWithRows(rows) { 
    // do something with rows 
    console.log(rows); 
} 

此輸出我:

對於所有行

- 每個索引作爲對象(每行是一個對象)-an陣列

所以它的數組與對象。

我想要的是一個數組的數組,所以我可以引用像2D數組的東西。

我看着jquery-csv,但沒有幫助轉換爲數組數組。也看着d3.csv.parser,但它也沒有幫助。

任何想法

+0

'$ .csv.toArrays(CSV)'在[jQuery的CSV文件(https://code.google.com/p/jquery-csv/)看起來像你在找什麼。 – 2014-11-24 04:30:08

+0

但事情是「csv」需要一個字符串。只有d3(我可以找到)可以在加載網頁時加載csv文件。 – random12345 2014-11-24 04:31:47

+0

爲什麼你不能將對象數組轉換爲數組?有沒有一些限制可以阻止你這樣做? – Hrishi 2014-11-24 04:37:57

回答

2

有幾種方法可以瞭解你正在嘗試做什麼。

  1. 每個對象都應該對應外數組內的數組,它不會改變長度。在這種情況下,您想要地圖訪問器函數(請參閱d3.csv的文檔)。

  2. 你想保持相同數量的元素,但安排他們與兩個指標,而不是一個。在這種情況下,我建議您將數據保存爲一維數據,然後在索引中進行數學運算。 D3會在您需要時爲您提供數組索引。

  3. 您想創建一個2D數組,其中每個元素從您擁有的數組中的多個對象中繪製。確切的轉換取決於你想要做什麼,但我會看看D3 docs for Arrays,它有助於列出頂部的一些普通JavaScript方法。特別是,請看pairszip。您還可以看看nest數據結構。如果您想要網格或矩陣,請參閱this example,特別是函數cross

  4. (回覆評論)您想使用CSV本身的2D結構。你基本上已經有了這個,除了內部數據結構是鍵值而不是索引。這利用了CSV標題和CSV列經常是異質的並且不承認數字排序。如果你真的想要將值更改爲數組,請使用map或accessor函數。除了d3.transpose,我真的不明白爲什麼你會想要。

這就是說,D3代碼(或至少最簡單的D3代碼)是圍繞着一維數據。你應該認真思考你是否真的需要一個二維數組。很難直接進入D3並製作自己的圖表;你會做很好地閱讀一些tutorials,並得到了它是如何工作的感覺,它有意見。

+0

你會知道任何其他庫,我可以解析CSV數據到2D數組嗎?我對圖表不感興趣,但是d3是唯一可以在加載網頁時加載csv的庫。 – random12345 2014-11-24 04:29:07

+0

見#4。 extrachars – mgold 2014-11-24 04:33:50