如何从D3中的矩形中获取数据?

时间:2015-07-30 16:01:32

标签: javascript jquery html css d3.js

我现在正在研究一些我正在研究的事情:

http://jsfiddle.net/Qh9X5/5760/

基本上我已经创建了3个矩形,顶部有3个圆圈,在我自己的工作中大约有80个。我想要做的是比较这些矩形以检查哪些矩形具有相同的数字。

我已经使用了强制布局的节点,所以通常我会像这样经历它们:

     rectangles.forEach(function(e){

        console.log(e.Number) // to get that rectangles number

        var compareRect = rectangles.filter(function(n){ return n.Number === e.Number});

        if(e.Connect === compareRect.Connect){
        //colour corresponding circles green
        }
        else{
        //colour corresponding circles red
        }
        });

我甚至无法登录到控制台,因为这给了我未定义的。

我想得到矩形数据,所以我可以先比较它们的数字,然后一旦数字相同,检查“连接”值是否相同。如果是,则在相同编号的矩形绿色上对圆圈着色,如果“连接”值不同,则将圆圈着色为红色。

希望这是有道理的,基本上我无法掌握我创建的任何矩形的数据。谢谢你的时间:))

1 个答案:

答案 0 :(得分:3)

请注意,您的变量rectanglesd3 selection,它是一个二维数组,包含对rect的分组引用。但是,您使用Array.prototype.forEach()迭代数组。

rectangles.forEach(function(e){
    console.log(e.Number) // to get that rectangles number
});

虽然在技术和语法上都是正确的,但这并没有给你预期的行为。要迭代矩形,您应该使用selection.each(function)代替:

rectangles.each(function(e){
    console.log(e.Number) // to get that rectangles number
});

请参见此工作JSFiddle