我在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;
}
})
})
预先感谢
答案 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/