2014-11-10 3 views
0

두 값을 기준으로 필터링해야합니다. 나는 기능 이상 사용하여 기능을angularJs에서 다중 작업 필터링

JSON 데이터를 다음과 같이

{"homeAddress":"26, New Street, Bangalore", 
     "officeAddress":"31, Old Office Street, Bangalore" 
},{ 
"homeAddress":"27, Neww Street, Bangalore", 
     "officeAddress":"30, Old Office Street, Bangalore" 
} 


     var locationFilter = {officeAddress: location}; 
     var locationFilter1 = {homeAddress: location}; 
     filterData = $filter('filter')(data, locationFilter); 
     filterData = $filter('filter')(data, locationFilter1); 
     return filterData; 

입니다하려합니다. 두 번째 옵션 만 필터링했습니다.

위의 스타일링으로 두 조건을 필터링하는 방법과 어떻게 OR, AND Opeartion을 사용할 수 있습니까?

예 : 예 : 26 & 31이 올바르게 필터됩니다. 하지만, 여기에 27 AND 기능을

답변

1

를 필터링하지 않습니다 (둘 다 officeAddresslocation 동일 homeAddress이 요소만을 표시 할 때 즉,), 단지 결합 된 개체를 만들고 filter로 전달 :

var bothLocationsCheck = { 
    officeAddress: location, 
    homeAddress: location 
}; 
filterData = $filter('filter')(data, bothLocationsCheck); 

그건 분명히 당신에게 줄거야; 'OR'의 경우 두 결과를 연결하면됩니다.

filteredData = $filter('filter')(data, locationFilter).concat(
    $filter('filter')(data, locationFilter1)); 

...하지만이 경우 결과에서 중복을 제거해야합니다.

그래도 필자는 필터링 기능 자체 내에서 이러한 종류의 작업을 구현하는 다른 방법을 선호합니다. 예를 들어 :

filteredData = $filter('filter')(data, function(el) { 
    return el.homeAddress.indexOf(location) !== -1 
     || el.officeAddress.indexOf(location) !== -1 
}); 

OR에서 AND 기능이 기능을 변경하지 않고 사소한.

+1

OR 연산을 사용해야합니다. 하지만 그것은 AND 연산을 줄 수 있습니다. –

+0

그것은 locationFilter만을 제공합니다. locationFilter1에서 작동하지 않습니다. –

+0

귀하의 경우 '작동하지 않는 것'중 어느 것이 더 구체적 일 수 있습니까? – raina77ow