如何从angularjs循环中获得独特的价值

时间:2019-03-10 10:50:25

标签: javascript arrays angularjs

我在中创建了一个循环,我想从该循环中获得不同的值,然后将其push转换为array

我得到的是重复值。

$scope.Empassignedvacations从db的datatable返回多个数据。 vac的其中一列是vac,它在数据库中显示多个假期键。 我想做的就是获取这些键并区分它们,然后将它们推到另一个$scope数组中。其名称为$scope.checkedvacs。但是我得到了2,2,2,2,20,20,20,20

Assignments.getvacations().then(function (response) {
   $scope.vacations = (response.data);

   Assignments.GetEmpassignedvacations($scope.SelectedEmp1.staffkey)
   .then(function (response) {
     $scope.Empassignedvacations = (response.data)
     $scope.checkedvacs.push( $scope.Empassignedvacations.vac );

     angular.forEach($scope.Empassignedvacations, function (e) {
          angular.forEach($scope.AlternateDirector, function (a) {
               if (e.Staff_Key == a.Staff_Key) {
                  $scope.AlternateD = e.AlternateD; 
               }
          })
          angular.forEach($scope.status, function (s) {
               if (e.status == s.stsid) {
                  $scope.sts = s.stsid;
               }
          })
     })

预先感谢

2 个答案:

答案 0 :(得分:0)

发生这种情况是因为您使用相同的值$scope.Empassignedvacations进行游戏。

将其推入阵列,然后进行更改。这就是为什么您获得2,2,2,2,20,20,20,20

的原因

因此您可以通过推送值的副本来解决此问题,例如:

$scope.checkedvacs.push( angular.copy($scope.Empassignedvacations.vac));

答案 1 :(得分:0)

首先在全局中声明$scope.checkedvacs=[]$scope.keys=[]进行标准代码练习,然后尝试下面的代码

angular.forEach($scope.Empassignedvacations.vac, function(item) {
  // we check to see whether our object exists
  $scope.keys = item[keyname];
  // if it's not already part of our keys array
  if ($scope.keys.indexOf(key) === -1) {
    // push this item to our final output array
    $scope.checkedvacs.push(item);
  }
});

删除下面的代码,并用第一个代码示例替换您的代码。

$scope.checkedvacs.push( $scope.Empassignedvacations.vac );

 angular.forEach($scope.Empassignedvacations, function (e) {
      angular.forEach($scope.AlternateDirector, function (a) {
           if (e.Staff_Key == a.Staff_Key) {
              $scope.AlternateD = e.AlternateD; 
           }
      })
      angular.forEach($scope.status, function (s) {
           if (e.status == s.stsid) {
              $scope.sts = s.stsid;
           }
      })

您还可以点击下面的波纹管链接,这可能对您有帮助 https://tutorialedge.net/javascript/angularjs/removing-duplicates-from-ng-repeat/