2016-02-26 43 views
1

我有100個0123,元素,我試圖使用基於數據對象的屬性的D3選擇和修改。根據對象屬性將數據綁定到現有數量的元素

例如:

[Object, Object] 
    0: Object 
     name: "john" 
     count: 32 
    1: Object 
     name: "jane" 
     count: 48 

我基本上想要做一些版本:

d3.selectAll(rect) 
    .data(data) 
    .attr('class', function(d) { return d.name }); 

...使得前32分<rect>■找了class="john",在未來48 <rect>■找class="jane",其餘的20 <rect>沒有課。

現在,它只是分類基於對象的數量 - 即第一<rect>class="john",第二個有class="jane",其他98不上課,但我無法弄清楚如何實現期望的行爲在這裏...

+0

你是如何創建'rect'和數據的? –

+0

rect是通過一個單獨的函數繪製的,它首先執行以創建100個方格...數據存儲在var data變量中 –

+0

我的觀點是,爲什麼你沒有正確的名稱屬性到處? –

回答

0

當你創建你的<rects>時,最好的方法可能是添加這個類的信息。但是,如果出於任何原因你的設置不允許你,那麼你應該有一個陣列,其數量與你擁有的<rects>的數量相同。現在 https://github.com/mbostock/d3/wiki/Selections#Data

,當執行第二個代碼塊,則:.data()作用於陣列中的所有元件,並且每一個那些<rects>(你的情況)的繼承包含在每個陣列中的元素的信息只更新爲2 <rects>,因爲您的數組只包含2個對象。然後你可以做的是創建另一個陣列,總共有100個元素,每個都有你想要的類:)

讓我知道如果你有任何其他問題!

相關問題