Я хотел бы удалить индекс из массива, если ответ службы поддержки возвратит true, поэтому в нижеприведенном случае допустим, что у нас есть true из службы отдыха, я хотел удалить объект, где id является "RA_ATTST_LANGUAGE" из массива. Я пробовал код ниже, но не удалял то, что не хватает?
main.js
MessageAdminNotificationFactory.getAttestationLanValidation().then(function(response){
var data = response.data;
console.log('attestation',data);
if(data){
angular.forEach($scope.adminDataSource,function(value,$index){
if(value.id === 'RA_ATTST_LANGUAGE'){
$scope.adminDataSource.splice($index, 1);
}
console.log('dropdown',value.id);
});
}
});
$scope.adminDataSource = [{
"uid": null,
"index": 0,
"selected": null,
"expanded": null,
"id": "RA_PLTFRM_NOTIF",
"text": "Platform Maintenance Notification",
"parentId": null,
"items": null
}, {
"uid": null,
"index": 0,
"selected": null,
"expanded": null,
"id": "RA_ATTST_LANGUAGE",
"text": "Attestation Language",
"parentId": null,
"items": null
}]
$scope.adminDataSource = $scope.adminDataSource.filter(
function(value){
return value.id !== 'RA_ATTST_LANGUAGE';
})
Array.filter - это путь. отфильтровывает все, что оценивается как false;
Итерировать массив от конца до начала
for(var i=$scope.adminDataSource.length-1;i>=0;i--){
var value = $scope.adminDataSource[i];
if(value.id === 'RA_ATTST_LANGUAGE') {
$scope.adminDataSource.splice(i,1);
}
}
Таким образом, не имеет значения, сжимается ли массив во время повтора.