如何在不重复现有数据边缘的情况下导入新的json数据(gephiJSON)?
我的代码就像那样简单:
var parsed = vis.network.gephiParser.parseGephi(gephiJSON, parserOptions);
nodes.update(parsed.nodes);
edges.update(parsed.edges);
我恐怕没有找到任何选项或功能来避免/检查重复项。
感谢任何帮助。
*我无法控制导入的数据以避免重复。
答案 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;
}
}