반응형
각 및 스플라이스에 대한 angularjs
이런 배열이 있습니다.
$scope.emails = [
{"key":"Work","value":"user@domine.com"},
{"key":"","value":""},
{"key":"Work","value":"user2@domine.com"}
{"key":"","value":""}];
그래서 빈 이메일을 지우고 싶지만 각도가 깁니다.forEach
메소드는 마지막 개체인 하나의 개체만 제거합니다. 왜 그럴까요??.
js코드
angular.forEach($scope.emails, function(email, index){
if(email.value ===""){
$scope.emails.splice(index, 1);
}
});
내가 잘못하고 있는 곳에
문제는 루프 중에 배열에서 요소를 제거하여 이후 항목이 다른 인덱스에 있도록 한다는 것입니다.대신 뒤로 루프해야 합니다.
for (var i = $scope.emails.length - 1; i >= 0; i--) {
if (!$scope.emails[i].value) {
$scope.emails.splice(i, 1);
}
}
여기 업데이트된 예시가 있습니다.
다른 사람들이 지적한 것처럼, 코드의 원인은 배열이 제거되었다는 것입니다.각.각.에 대해 가법/할당 접근법을 시도해 볼 수 있습니다.
var filteredEmails = [];
angular.forEach($scope.emails, function(email, index){
if(email.value !==""){
filteredEmails.push(email);
}
});
$scope.emails = filteredEmails;
indexOf
돌아온다-1
물건을 찾을 수 없을 때.
항목을 제거하고 마지막 항목을 찾을 수 없을 때 제거하지 않는 방법은 다음과 같습니다.
var index = $scope.items.indexOf($scope.oldItem);
if (index != -1) {
$scope.items.splice(index, 1);
}
describe('Foreach Splice', function () {
it('splicing', function () {
var elements = [
{name: "Kelly", age: 16},
{name: "", age: 17},
{name: "Becky", age: 18},
{name: "", age: 18},
{name: "Sarah", age: 19},
{name: "", age: 20},
{name: "", age: 22},
{name: "Mareck", age: 21},
{name: "", age: 21},
{name: "Mareck", age: 21}
];
removeEmptyEntry(elements);
console.log(elements);
});
function removeEmptyEntry(elements) {
elements.forEach(function (element, index) {
if (!element.name) {
elements.splice(index, 1);
removeEmptyEntry(elements);
}
});
}
});
AngularJs로 시도해 본 적은 없지만 Angular 4에서는 비슷한 방식으로 작동합니다.
angular.forEach($scope.emails, function(email){
if(email.value ===""){
$scope.emails.splice($scope.emails.indexOf(email), 1);
}
});
각도 4 버전:
this.emailArray.forEach(email => {
if (email.value == "") {
this.emailArray.splice(this.emailArray.indexOf(email),1);
}
});
언급URL : https://stackoverflow.com/questions/24202962/angularjs-foreach-and-splice
반응형
'source' 카테고리의 다른 글
jQuery 약속을 사용하여 3개의 비동기 호출을 연결하려면 어떻게 해야 합니까? (0) | 2023.10.01 |
---|---|
자바스크립트에서 2 == [2]가 나타나는 이유는 무엇입니까? (0) | 2023.10.01 |
여기서 "0보다 큰" Oracle 버그 가능성 (0) | 2023.10.01 |
정의('CONCATENATE_SCRIPTs', false)를 사용하도록 강제됨; 갑자기 (0) | 2023.09.26 |
SQLite 소스 코드 읽기를 어디서 시작해야 합니까? (0) | 2023.09.26 |