Javascript 如何使用forEach从ng repeat中删除json对象

Javascript 如何使用forEach从ng repeat中删除json对象,javascript,angularjs,foreach,splice,Javascript,Angularjs,Foreach,Splice,目前,我正在尝试使用angularJS中的forEach方法映射2个对象,并在手风琴中显示它们。我正确地得到了所有结果……但是我不确定如何隐藏或拼接验证之外的对象 因此,在我的小提琴示例中……我不想显示验证之外的项目(例如,第四、第五、第六、第七个标题和值) HTML: <accordion ng-repeat="fee in fees"> <accordion-group ng-if="fee.feeBag.length"> <acc

目前,我正在尝试使用angularJS中的forEach方法映射2个对象,并在手风琴中显示它们。我正确地得到了所有结果……但是我不确定如何隐藏或拼接验证之外的对象

因此,在我的小提琴示例中……我不想显示验证之外的项目(例如,第四、第五、第六、第七个标题和值)

HTML:

 <accordion ng-repeat="fee in fees">
      <accordion-group ng-if="fee.feeBag.length">
        <accordion-heading>
          {{fee.headingName}}
        </accordion-heading>
          <div class="feecode-height" ng-repeat="feeParameter in fee.feeBag">
            <div class="row">
              <div class="col-xs-1">{{feeParameter.name}}</div>
              <div class="col-xs-4">{{feeParameter.text}}</div>
              <div class="col-xs-2" >{{feeParameter.amount}}</div>
            </div>
          </div>
      </accordion-group>
    </accordion>
JSON:

编辑:

除了两个问题外,一切正常

我的手风琴头在重复 阵列中包含已验证阵列的其他字段仍将显示


您不必拼接阵列对象,创建一个临时阵列并将所需对象存储到其中

使用For循环

  $scope.temp = [];
  for (var i = 0; i < $scope.fees.length; i++) {
      for (var j = 0; j < $scope.fees[i].feeBag.length; j++) {
          for (var k = 0; k < $scope.otherFees.length; k++) {
              if ($scope.fees[i].feeBag[j].name == $scope.otherFees[k].name) {
                  $scope.fees[i].feeBag[j].text = $scope.otherFees[k].text;
                  $scope.fees[i].feeBag[j].amount = $scope.otherFees[k].amount;
                  $scope.temp.push($scope.fees[i]);
              }
          }
      }
  }
  $scope.fees = $scope.temp;

拉小提琴

我试过了,但还是不明白。预期的输出是什么?如果你看我的fsfiddle链接…它就在那里。它显示实际输出。预期的输出是什么?哦,我想做的是……去掉那些不匹配的输出……因此预期的输出只有1,2,3和标题。你为什么要使用for循环而不是forEach?不,你也可以使用forEach,但是推送正确的对象。以前的问题是,当名称相等的条件失败时,如果尝试拼接,它可能无法正常工作,因为数组中拼接的对象可能包含$scope的任何其他特定位置中存在的名称。不允许otherFees arraygetting错误显示[ngRepeat:dupes]在中继器中重复。使用“跟踪依据”表达式指定唯一关键点。有什么想法吗?在你的ng repeat中使用track by$index,或者使用任何唯一id进行跟踪
$scope.otherFees = [{'name': 1, 'text': 'ok', 'amount': 2}, {'name': 2, 'text': 'hello', 'amount': 3}, {'name': 3, 'text': 'cool', 'amount': 3}];

  $scope.fees = [
    { 
      'headingName': 'firstHeader',
      'feeBag': [
        {'name': 1}
      ]
    }, 
    {
      'headingName': 'secondHeader',    
      'feeBag': [
        {'name': 2}
      ]
    },
    {
      'headingName': 'thirdHeader',    
      'feeBag': [
        {'name': 3}
      ]
    },
    { 
      'headingName': 'forthHeader',
      'feeBag': [
        {'name': 4}
      ]
    }, 
    { 
      'headingName': 'fifthHeader',
      'feeBag': [
        {'name': 5}
      ]
    }, 
    { 
      'headingName': 'sixthHeader',
      'feeBag': [
        {'name': 6}
      ]
    }, 
    { 
      'headingName': 'seventhHeader',
      'feeBag': [
        {'name': 7}
      ]
    }
  ];
  $scope.temp = [];
  for (var i = 0; i < $scope.fees.length; i++) {
      for (var j = 0; j < $scope.fees[i].feeBag.length; j++) {
          for (var k = 0; k < $scope.otherFees.length; k++) {
              if ($scope.fees[i].feeBag[j].name == $scope.otherFees[k].name) {
                  $scope.fees[i].feeBag[j].text = $scope.otherFees[k].text;
                  $scope.fees[i].feeBag[j].amount = $scope.otherFees[k].amount;
                  $scope.temp.push($scope.fees[i]);
              }
          }
      }
  }
  $scope.fees = $scope.temp;
  $scope.temp=[];
  angular.forEach($scope.fees, function(value, key) {
    angular.forEach(value.feeBag, function(value2, key2) {
        angular.forEach($scope.otherFees, function(value3, key3){
        if (value.feeBag[key2].name === value3.name) {
          value.feeBag[key2].text =  value3.text;
          value.feeBag[key2].amount = value3.amount;
           $scope.temp.push(value);          
        }
      })
    });
  });
$scope.fees=$scope.temp;