2011-12-14 5 views
1

배열의 항목을 찾고 싶습니다. 그런 다음 찾은 다음 루프에서 제거하고 싶습니다. 이것은 내가 가지고 있지만 그것은 NXT 이름 반복 시작되도록에만foreach 루프 중에 jquery 배열에서 요소를 제거하십시오.

var tempArray = dataArray; 

$.each(users, function(i, val) { 
    var name = val.name; 
// loop over each obj and match 
$.each(tempArray, function(k, kval) { 
    if(name === kval.username){ 
     tempArray.splice(k, 1); 
    return; 
    } 
    }); 
});   

어떻게 내가 첫 번째 루프의 시작으로 다시 이동할 수 있습니다 두 번째 $의 .each의 시작 부분으로 다시 점프 무엇인가?

return false; 

답변

2

우리는 콜백 함수 return false함으로써 특정 반복에서 $의 .each() 루프를 깰 수있는 두 번째 루프에서 거짓을 반환 감사

+2

그러나 루프를 중단하고 싶지 않고 단순히 항목 [i]을 조건에서 만났기 때문에 루프에서 제거하면 어떻게됩니까? .each 루프()를 계속 진행하십시오. 설명서에서이 문제를 해결하지 못했고 일부 개발자는 반환을 사용하는 것으로 나타났습니다. $ (this)가 루프에서 제거되어야한다는 조건문 내에서. – blackhawk

1

그렙 당신이 원하는 값만 grep을 당신이 원하지 않는 것들을 버릴 것입니다.

var persons = peopleArray; 
$.each(users, function (ii, user) { 
    persons = jQuery.grep(persons , function (person) { 
     return (person.userName !== user.name); 
    }); 
}); 

또는 JavaScript 배열 FN {맵, 필터} 속기와

var persons= [{name: "tom", age: 22 }, { name: "jerry", age: 23 }, { name: "XXX", age: 24 }] 
, bads = [{ name: "XXX", pets: 9 }, { name: "YYY", pets: 6 }]; 

var badnames = bads.map(function(r){ return r.name }); 
alert(persons.filter(function(r) { 
    return badnames.indexOf(r.name) !== 0 
}).map(function (r) { 
    return r.name 
})); 

ECMAScript를 6 (람다 '=>') 할 수

var badnames = bads.map(r=>r.name); 
alert(persons.filter(r=> badnames.indexOf(r.name) !== 0).map(r=>r.name)); 

결과 "톰 jerry "