Javascript foreach循环内的Angularjs函数不工作
我有两个函数Javascript foreach循环内的Angularjs函数不工作,javascript,angularjs,algorithm,graph,Javascript,Angularjs,Algorithm,Graph,我有两个函数deleteNode,它接受一个节点id和deleteEdge,它接受一个edge对象作为输入。deleteEdge在按下一个按钮时被触发,它删除一个特定的节点并删除其所有连接的边。但是,我的代码似乎只删除了数组中添加的第一条边。不确定是什么导致了这个问题 此处$scope.nodes是一个对象数组,每个对象如下所示: var node = { id:$scope.node_id, Yedges_id:[], Nedges_id:[], } $scope.e
deleteNode
,它接受一个节点id和deleteEdge
,它接受一个edge对象作为输入。deleteEdge
在按下一个按钮时被触发,它删除一个特定的节点并删除其所有连接的边。但是,我的代码似乎只删除了数组中添加的第一条边。不确定是什么导致了这个问题
此处$scope.nodes是一个对象数组,每个对象如下所示:
var node = {
id:$scope.node_id,
Yedges_id:[],
Nedges_id:[],
}
$scope.edges是一个对象数组,其中每个边看起来像:
var edge = {
id: $scope.edge_id,
start_id: start,
end_id: end,
}
考虑使用<代码> Fielter()/<代码>来返回一个新的数组吗?我已经尝试过了,但是仍然没有用。如果您只是将新数组重新分配给包含原始数组的属性,则charlietflNo不需要对筛选数组执行删除操作
$scope.deleteEdge = function(edge){
var index = $scope.edges.indexOf(edge)
var start_idx = $scope.nodes.findIndex(node=>node!==undefined && node.id==edge.start_id);
var end_idx = $scope.nodes.findIndex(node=>node!==undefined && node.id==edge.end_id);
var Ystart_edge_idx = $scope.nodes[start_idx].Yedges_id.indexOf(edge.id);
var Nstart_edge_idx = $scope.nodes[start_idx].Nedges_id.indexOf(edge.id);
var end_edge_idx = $scope.nodes[end_idx].Yedges_id.indexOf(edge.id);
if(Ystart_edge_idx!==-1){
$scope.nodes[start_idx].Yedges_id.splice(Ystart_edge_idx,1);
}
if(Nstart_edge_idx!==-1){
$scope.nodes[start_idx].Nedges_id.splice(Nstart_edge_idx,1);
}
$scope.nodes[end_idx].Yedges_id.splice(end_edge_idx,1);
$scope.edges.splice(index, 1);
}
$scope.deleteNode = function(id){
var index = $scope.nodes.findIndex(x=>x!==undefined && x.id===id);
$scope.nodes[index].Yedges_id.forEach(edge_id => {
var edge = $scope.edges.filter(edge=>edge.id==edge_id)
$scope.deleteEdge(edge[0]);
});
$scope.nodes[index].Nedges_id.forEach(edge_id => {
var edge = $scope.edges.filter(edge=>edge.id==edge_id)
$scope.deleteEdge(edge[0]);
});
delete $scope.nodes[index]
}