AngularJS Example:
HTML
<div ng-app="app" ng-controller="Ctrl">
<div>
<label>Filter:</label>
<input type="text" ng-model="filter">
<hr>
<select size="20" ng-model="selected" ng-options="i as i.name group by i.cls for i in list | filter:filter"></select>
</div>
</div>
CSS
</style> <!-- Ugly Hack due to jsFiddle issue: http://goo.gl/BUfGZ -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<style>
JavaScript
angular.module('app', [])
.controller('Ctrl', function($scope) {
$scope.list = [
{cls: 'Foo', name: 'Alpha'},
{cls: 'Foo', name: 'Beta'},
{cls: 'Foo', name: 'Gamma'},
{cls: 'Bar', name: 'Delta'},
{cls: 'Bar', name: 'Epsilon'},
{cls: 'Baz', name: 'Omega'}
];
});