Angular - filter by 2 properties

by douglasloyo

HTML

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>
<div ng-controller="controller as ctrl">
  <input type="textbox" ng-model="ctrl.search" />
  <ul>
    <li ng-repeat="p in ctrl.data | custom:ctrl.search" title="{{p.id}}">{{p.id}} - {{p.name}} - {{p.last}}</li>
  </ul>
</div>

JavaScript

angular.module('app', [])
.filter('custom', function () {
    return function (entries, filter) {
    		// If no filter applied then return all.
        if(!filter)
        	return entries;
          
        var out = [];
        
        angular.forEach(entries, function (value, key) {
        		if(value.name.toLowerCase().indexOf(filter.toLowerCase()) !== -1 ||
            value.id.toLowerCase().indexOf(filter.toLowerCase()) !== -1 ||
            value.last.toLowerCase().indexOf(filter.toLowerCase()) !== -1) {
            	out.push(value);
            }
        });
        return out;
    };
})
.controller('controller', function ($scope) {
	var ctrl = this;
  
  ctrl.data = [
  							{id:"1", name:"John", last:"Perez"},
  							{id:"2", name:"Jane", last:"Lopez"},
                {id:"3", name:"Mark", last:"Martinex"},
  						];
	//$scope.hello = "Hi!";
});;

angular.bootstrap(document, ['app']);