2016-07-22 2 views
0

grep 함수가 작동하지 않는 이유가 정말로 혼란 스럽습니다. 내가 지금처럼 객체의 배열을 가지고 :

$scope.kit = [{id: 1, producer: "company", category: "hardware" }, 
       {id: 2, producer: "company2", category: "hardware"}]; 

그리고 내가 GREP을 사용하여 ID 2를 제거하기 위해 노력하고있어, 나는 내가 할 것이라고 생각 :

$scope.kit = 
$.grep($scope.kit, function(e) { 
    e.id != 2; 
}); 

을하지만, 내가 할 모든 빈 배열입니다 매번. 여기서 내가 뭘 잘못하고 있니?

답변

3

은 부울 식인을 반환하지 않습니다. 당신은 return 값을 제공해야

return e.id != 2; 

return없이, e.id != 2; 아무것도하지 않습니다 그 표현의 결과는 망각으로 사라집니다. 그런 다음 $.grep 콜백 함수의 반환 값은 모든 요소에 대해 undefined이며, 이는 위선이며 요소가 일치하지 않으므로 빈 배열이됩니다.

+0

이 _ _ "당신은 값을 반환해야"부울 부울 값을 반환해야하고 'false'' value ... +1 – Rayon

+0

네,하지만'e.id! = 2'는 부울 표현식이므로 문제가되지 않습니다. – trincot

+0

네,하지만 값을 돌려 주어야 해요 _ 내게 불완전한 것처럼 보입니다 ...이 상황에서 괜찮습니다. – Rayon

1

grep 함수에서 return을 사용하십시오.

$.grep($scope.kit, function(e) { 
    return e.id != 2; 
}); 

JQuery와 문서 http://api.jquery.com/jquery.grep/

에 따라, 기능은 정의되지 않은`... 아마 ..

관련 문제