Reputation: 1892
I have sample Json. I am fiter based on key value.
The fiter didn't sort exact value
Example:
angular.module('myApp').controller('testController', ['$filter', '$scope',
function($filter, $scope) {
var obj = '[{"id":"1","m_id":1,"value":"Male"},
{"id":"2","m_id":1,"value":"Female"},
{"id":"3","m_id":1,"value":"Other"},
{"id":"45","m_id":9,"value":"Single"},
{"id":"46","m_id":9,"value":"Married"},
{"id":"47","m_id":10,"value":"Father"},
{"id":"48","m_id":10,"value":"Mother"},
{"id":"61","m_id":10,"value":"Cousin"},
{"id":"62","m_id":10,"value":"Other"}]';
var obj1 = JSON.parse(obj);
var result = $filter('filter')(obj1, {
m_id : "1"
});
}]);
Output:
[{"id":"1","m_id":1,"value":"Male"},
{"id":"2","m_id":1,"value":"Female"},
{"id":"3","m_id":1,"value":"Other"},
{"id":"47","m_id":10,"value":"Father"},
{"id":"48","m_id":10,"value":"Mother"},
{"id":"61","m_id":10,"value":"Cousin"},
{"id":"62","m_id":10,"value":"Other"}]
Expected Output:
[{"id":"1","m_id":1,"value":"Male"},
{"id":"2","m_id":1,"value":"Female"},
{"id":"3","m_id":1,"value":"Other"}]
Upvotes: 2
Views: 1616
Reputation: 6216
Change
var result = $filter('filter')(obj1, {
m_id : "1"
});
to
var result = $filter('filter')(obj1, function(item) { return item && item.m_id == 1; });
Demo here
Upvotes: 1
Reputation: 23816
You can do this way also, by using Javascript Filter():
var result = obj1.filter(function(v){
return v.m_id == 1;
});
In AngularJS v.1.1.3 exact filter is provided natively
var result = $filter('filter')(obj1,
{m_id : 1},
true // ==========> this is for exact match
);
Upvotes: 4