UNPKG

angular-filter

Version:

Bunch of useful filters for angularJS(with no external dependencies!)

45 lines (38 loc) 1.13 kB
/** * @ngdoc filter * @name groupBy * @kind function * * @description * Create an object composed of keys generated from the result of running each element of a collection, * each key is an array of the elements. */ angular.module('a8m.group-by', [ 'a8m.filter-watcher' ]) .filter('groupBy', [ '$parse', 'filterWatcher', function ( $parse, filterWatcher ) { return function (collection, property) { if(!isObject(collection) || isUndefined(property)) { return collection; } return filterWatcher.isMemoized('groupBy', arguments) || filterWatcher.memoize('groupBy', arguments, this, _groupBy(collection, $parse(property))); /** * groupBy function * @param collection * @param getter * @returns {{}} */ function _groupBy(collection, getter) { var result = {}; var prop; forEach( collection, function( elm ) { prop = getter(elm); if(!result[prop]) { result[prop] = []; } result[prop].push(elm); }); return result; } } }]);