Javascript 在形状中递归绘制形状Fabric.js

Javascript 在形状中递归绘制形状Fabric.js,javascript,recursion,canvas,fabricjs,Javascript,Recursion,Canvas,Fabricjs,我必须在js中制作一个网络图,其中有包含在组件中的组件(等等)。我使用canvas对Fabric.js库执行此操作 我从如下api获得json: { “名称”:“BAY_01”, “类型”:“间隔”, “_链接”:[{ “名称”:“服务器\u 01”, “类型”:“服务器”, “_链接”:[{ “名称”:“CPU” }, { 等 }], }] } 我认为实现这些组件的绘制的最佳方法是使其递归,但我不知道如何做到这一点 有人能帮我解决我的问题吗?这里是一个使用递归的例子。基本上,您需要确定JSO

我必须在js中制作一个网络图,其中有包含在组件中的组件(等等)。我使用canvas对Fabric.js库执行此操作

我从如下api获得json:

{
“名称”:“BAY_01”,
“类型”:“间隔”,
“_链接”:[{
“名称”:“服务器\u 01”,
“类型”:“服务器”,
“_链接”:[{
“名称”:“CPU”
}, {
等
}],
}]
}
我认为实现这些组件的绘制的最佳方法是使其递归,但我不知道如何做到这一点


有人能帮我解决我的问题吗?

这里是一个使用递归的例子。基本上,您需要确定JSON对象的属性是否为数组,然后再次调用递归函数,否则请检查属性名称是否为“name”,然后调用函数按名称绘制形状:

var obj={
“名称”:“BAY_01”,
“类型”:“间隔”,
“_链接”:[{
“名称”:“服务器\u 01”,
“类型”:“服务器”,
“_链接”:[{
“名称”:“CPU”
}, {
“名称”:“服务器02”,
“类型”:“服务器”,
“_链接”:[{
“名称”:“CPU2”
}]
}]
}]
};
函数goThroughtObject(对象,名称){
var键;
if(阵列的obj实例){
返回对象映射(函数(值){
如果(值的类型==“对象”){
GothThroughtObject(值、名称)
}
返回值;
})
}否则{
用于(输入obj){
if(对象hasOwnProperty(键)){
如果(键===名称){
drawByName(obj[键]);
}
if(obj[key]数组实例| |(obj[key]!==null&&obj[key]。构造函数===Object)){
goThroughtObject(对象[key],名称);
}
} 
}
}
};
//在此函数中实现fabricjs逻辑
函数drawByName(名称){
log(“Fabricjs将绘制一个:”+名称);
}

goThroughtObject(obj,name')您计划如何绘制组件?按名字,按类型?您可以在JSON中包含信息吗?你能给我们一些代码吗?到目前为止你做了什么?我想按名称画组件,但我现在还没有做一些代码。一个组件由以下内容定义:名称、类型、字段和链接。如果两个组件通过“包含链接”(它只是我数据库中的一个字段)链接,如我的示例中所示:BAY_01和SERVER_01通过包含链接链接链接,因此BAY_01包含一个定义其链接的“_链接”对象。现在,我只需要实现一个组件及其链接的制图(仅包含类型)。非常有帮助!