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]
    }