var data = [ { Name: "John Smith", Gender: "M", Location: "Wales", Posts:[ { date: "Jan 2015", message: "lorem ipsum" }, { date: "Mar 2015", message: "lorem ipsum" } ] }, { Name: "Sally Smith", Gender: "F", Location: "USA", Posts:[ { date: "Nov 2014", message: "lorem ipsum" }, { date: "June 2015", message: "lorem ipsum" } ] }, { Name: "Curtis Timson", Gender: "M", Location: "England", Posts:[ { date: "Feb 2015", message: "lorem ipsum" }, { date: "May 2015", message: "lorem ipsum" } ] }, { Name: "Sam Wallace", Gender: "M", Location: "England", Posts:[ { date: "May 2015", message: "lorem ipsum" }, { date: "June 2015", message: "lorem ipsum" } ] }, { Name: "Caroline James", Gender: "F", Location: "Scotland", Posts:[ { date: "Jan 2013", message: "lorem ipsum" }, { date: "Mar 2014", message: "lorem ipsum" } ] } ]; var myApp = angular.module("myApp", []); myApp.controller("myController", function($scope){ $scope.users = data; }); myApp.filter("UserFilter", function(){ return function(users, postDate, location){ var addUser; var selectedUsers = []; for(i=0;i<users.length;i++){ addUser = false; if (users[i].Location == location){ for(j=0;j<users[i].Posts.length;j++){ if(users[i].Posts[j].date == postDate){ addUser = true; } } if (addUser){ selectedUsers.push(users[i]); } } } return selectedUsers; }; });
<div ng-app="myApp" ng-controller="myController"> <ul> <li ng-repeat="user in users | UserFilter: 'June 2015':'England'">{{user.Name}} | {{user.Location}}</li> </ul> </div>