2016-02-26 62 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个元素,每个都有你想要的类:)

让我知道如果你有任何其他问题!