我有一个函数调用HTTP Request GET来比较给定值,以检查它是否匹配数组中的任何元素。如果没有匹配,我想把这个给定的值放到一个数组中,但我的问题是,因为我循环遍历许多元素,所以当我需要它来显示一个时,我在数组中得到重复。这是我的代码:
$scope.fetchParcel = function()
{
$http({
method: 'GET',
url: '/infiniti/' + $scope.infinitiId,
})
.success(function(a){
angular.forEach($scope.parcels, function(parcel, key){
angular.forEach(parcel, function(par){
if(par == $scope.shipper_ref_no){
$scope.scans.push(parcel);
$scope.checked++;
$scope.parcels.splice(key, 1);
}
if(par != $scope.shipper_ref_no){
$scope.excludeds.push($scope.shipper_ref_no);
}
});
});
});
}
在它的最后一部分$scope.excludes.push($scope.shipper_ref_no);
它是正确的,它将shipper_ref_no存储到数组中,但由于数组中有三个元素,它实际上存储了shipper_ref_no三次,当我只需要它存储一次后检查发现它不匹配任何元素。我该如何做到这一点?
数组示例:
[
-{
id: 1
t: "1122"
srn: "23"
}
-{
id: 2
t: "234"
srn: "23"
}
-{
id: 3
t: "dd"
srn: "44"
}
]
如果我的输入是说“444kkkddd”显然没有任何元素的匹配,所以它放入我的数组444kkkddd 9次..我只需要它存储一次。不要误会我的意思,我知道它为什么要打印9次,但我只需要一个解决方案就可以打印一次。我遇到了一个残局。
答案 0 :(得分:1)
您可以保留已添加ID的列表:
var addedIds = {};
if(par != $scope.shipper_ref_no){
if (!addedIds[$scope.shipper_ref_no]) {
addedIds[$scope.shipper_ref_no] = true;
$scope.excludeds.push($scope.shipper_ref_no);
}
}