我现在正在研究一些我正在研究的事情:
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
}
});
我甚至无法登录到控制台,因为这给了我未定义的。
我想得到矩形数据,所以我可以先比较它们的数字,然后一旦数字相同,检查“连接”值是否相同。如果是,则在相同编号的矩形绿色上对圆圈着色,如果“连接”值不同,则将圆圈着色为红色。
希望这是有道理的,基本上我无法掌握我创建的任何矩形的数据。谢谢你的时间:))
答案 0 :(得分:3)
请注意,您的变量rectangles
是d3 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。