RSKMR
RSKMR

Reputation: 1892

Angualrjs Filter array in controller

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"}]

Click here

Upvotes: 2

Views: 1616

Answers (2)

Nathan
Nathan

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

Manwal
Manwal

Reputation: 23816

You can do this way also, by using Javascript Filter():

var result = obj1.filter(function(v){
    return v.m_id == 1;
});

DEMO


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
);

Working DEMO

Upvotes: 4

Related Questions