Valores unicos AngularJS

Filtro pra não repetir valores iguais de um array

by Diego Augusto

HTML

<script src="http://code.angularjs.org/angular-1.0.1.js"></script>
<div ng-controller="MyCtrl">
 <ul ng-repeat="item in dados| unique:'horario2'">
 <li>{{item.nome}} -- {{item.horario1}} -- {{item.horario2}}</li>
 </ul>
</div>

JavaScript

var myApp = angular.module('myApp',[]);
myApp.filter('unique', function() {
   return function(colecao, campo) {
      var saida = [], 
          keys = [];

      angular.forEach(colecao, function(item) {
          var key = item[campo];
          if(keys.indexOf(key) === -1) {
              keys.push(key);
              saida.push(item);
          }
      });

      return saida;
   };
})

function MyCtrl($scope, $filter) {
    $scope.dados = [
    	{'id':1,'nome':'dom','horario1':'01:00','horario2':'02:00'},
    	{'id':1,'nome':'seg','horario1':'07:00','horario2':'08:00'},
    	{'id':1,'nome':'ter','horario1':'09:00','horario2':'10:00'},
    	{'id':1,'nome':'qua','horario1':'01:00','horario2':'02:00'},
		]
    
    function init(){
    	 var unicos = $filter('unique')($scope.dados, 'horario2');
       console.log(unicos)
    }
    init();
}