VisJs如何在不创建重复边的情况下导入json数据?

时间:2017-02-10 16:30:34

标签: json import duplicates gephi vis.js

如何在不重复现有数据边缘的情况下导入新的json数据(gephiJSON)?

我的代码就像那样简单:

var parsed = vis.network.gephiParser.parseGephi(gephiJSON, parserOptions);
nodes.update(parsed.nodes);
edges.update(parsed.edges);

我恐怕没有找到任何选项或功能来避免/检查重复项。

感谢任何帮助。

*我无法控制导入的数据以避免重复。

1 个答案:

答案 0 :(得分:0)

我只使用nodes.update方法来更新现有网络。要创建新的,我使用nodes.add。因此,在尝试添加之前检查网络中的现有数据非常重要。我使用双循环例程和JSON的拼接方法来删除重复的节点和边缘。我的代码是这样的(请耐心等待我,我是JavaScript新手):

function recibedatos() {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                fixedResponse = http_request.responseText;
                jsonObj = JSON.parse(fixedResponse); 
                try {
                    for (var i=0;i<jsonObj.nodos.length;i++) {
                        for (var j=0;j<nodes.length;j++) {
                            if (jsonObj.nodos[i].id==nodes.get()[j].id)  {
                                     jsonObj.nodos.splice(i,1);
                                      i-=1;
                                      break;
                            }
                        }
                     }
                     nodes.add(jsonObj.nodos);
                  }
                  catch (err) {
                      alert(err);
                  }
                  try {
                      for (var i=0;i<jsonObj.vinculos.length;i++) {

                          for (var j=0;j<edges.length;j++) {
                              if (jsonObj.vinculos[i].to==edges.get()[j].to && jsonObj.vinculos[i].from==edges.get()[j].from && jsonObj.vinculos[i].label==edges.get()[j].label)  {
                                  jsonObj.vinculos.splice(i,1);
                                  i-=1;
                                  break;
                              }
                          }

                      }
                      edges.add(jsonObj.vinculos);
                  }
                  catch (err) {
                      alert(err);
                  }
             } else {
                  alert("Ocurrio un problema con la URL.");
            }
            fixedResponse=null;
            jsonObj=null;
      }
}