doc/api/core/operators/groupby.md
# This is RxJS v 4. [Find the latest version here](https://github.com/reactivex/rxjs)### `Rx.Observable.prototype.groupBy(keySelector, [elementSelector])`[Ⓢ](https://github.com/Reactive-Extensions/RxJS/blob/master/src/core/linq/observable/groupby.js "View in source") Groups the elements of an observable sequence according to a specified key selector function and comparer and selects the resulting elements by using a specified function. #### Arguments1. `keySelector` *(`Function`)*: A function to extract the key for each element.2. `[elementSelector]` *(`Function`)*: A function to map each source element to an element in an observable group. #### Returns*(`Observable`)*: A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. #### Example```jsvar codes = [ { keyCode: 38}, // up { keyCode: 38}, // up { keyCode: 40}, // down { keyCode: 40}, // down { keyCode: 37}, // left { keyCode: 39}, // right { keyCode: 37}, // left { keyCode: 39}, // right { keyCode: 66}, // b { keyCode: 65} // a]; var source = Rx.Observable.from(codes) .groupBy( function (x) { return x.keyCode; }, function (x) { return x.keyCode; }); var subscription = source.subscribe( function (obs) { // Print the count obs.count().subscribe(function (x) { console.log('Count: ' + x); }); }, function (err) { console.log('Error: ' + err); }, function () { console.log('Completed'); }); // => Count: 2// => Count: 2// => Count: 2// => Count: 2// => Count: 1// => Count: 1// => Completed``` ### Location File:- [`/src/core/linq/observable/groupby.js`](https://github.com/Reactive-Extensions/RxJS/blob/master/src/core/linq/observable/groupby.js) Dist:- [`rx.all.js`](https://github.com/Reactive-Extensions/RxJS/blob/master/dist/rx.all.js)- [`rx.all.compat.js`](https://github.com/Reactive-Extensions/RxJS/blob/master/dist/rx.all.compat.js)- [`rx.coincidence.js`](https://github.com/Reactive-Extensions/RxJS/blob/master/dist/rx.coincidence.js) NPM Packages:- [`rx`](https://www.npmjs.org/package/rx) NuGet Packages:- [`RxJS-All`](http://www.nuget.org/packages/RxJS-All/)- [`RxJS-Coincidence`](http://www.nuget.org/packages/RxJS-Coincidence/) Unit Tests:- [`/tests/observable/groupby.js`](https://github.com/Reactive-Extensions/RxJS/blob/master/tests/observable/groupby.js)