如何通过特定ID删除内部子对象?

时间:2016-08-30 12:46:44

标签: javascript angularjs

以下是我的json结构:

$scope.dataList = [{
   CompanyName: null,
   Location: null,
   Client: [{
      ClientId: 0,
      ClientName: null,
      Projects:{
         Id: 0,
         Name: null,
      }
   }]
}];

我正在尝试remove client data by specific clientid from list of clients,但客户端数据未被删除,我没有收到任何错误。

代码:

for (var i = 0; i < $scope.dataList.length; i++)
            {
                for (var j = 0; j < $scope.dataList[i].Client.length; j++)
                {
                    if ($scope.dataList[i].Client[j].ClientId == 101)
                    {
                       $scope.dataList[i].Client.splice(j, 1);
                    }     
                }
            }

有人可以告诉我我的代码有什么问题吗?

2 个答案:

答案 0 :(得分:1)

您可以使用delete语句。

for (var i = 0; i < $scope.dataList.length; i++)
            {
                for (var j = 0; j < $scope.dataList[i].Client.length; j++)
                {
                    if ($scope.dataList[i].Client[j].ClientId == 101)
                    {
                       delete $scope.dataList[i].Client[j];
                    }     
                }
            }

但是当你被删除时这会产生问题,因为在for循环中有一个项目删除所以项目数量减少。

所以你必须使用其他方式。

答案 1 :(得分:1)

这有效:

for (var i = 0; i < $scope.dataList.length; i++) {
  for (var j = 0; j < $scope.dataList[i].Client.length; j++) {
    var foundIndex;
    if ($scope.dataList[i].Client[j].ClientId == 101){
      foundIndex = j;
    }
    $scope.dataList[i].Client.splice(j, 1);
  }
}

小提琴:https://jsfiddle.net/uv3zo0y2/