OrderBy boolean value with AngularJS ng-repeat

angularjs, angularjs-ng-repeat, javascript

Solution

orderBy accepts and sorts by booleans.

Order the repeated element by the the 'value' property of 'group':

ng-repeat="group in groups | orderBy: 'value'"

This will reverse the order:

ng-repeat="group in groups | orderBy: '-value'"

If you would like to also sort by the 'name' property of 'group':

ng-repeat="group in groups | orderBy: ['value','name']"

Problem

I'd like to be able to sort by whether a variable is true or false. Let's say we have a variable like so: ``` groups = { { name: 'first', value: true }, { name: 'second', value: false }, { name: 'third', value: true }, { name: 'fourth', value: false } } ``` And we can loop through it like so: ``` <div ng-repeat="group in groups"> {{group.name}} {{group.value}} </div> ``` Which will give you the following: ``` first true second false third true fourth false ``` But if I wanted to sort by a boolean value then I could do this: ``` <div ng-repeat="group in groups | filter:{value:true}"> {{group.name}} {{group.value}} </div> <div ng-repeat="group in groups | filter:{value:false}"> {{group.name}} {{group.value}} </div> ``` Which would give me the following output (which I want): ``` first true third true second false fourth false ``` Is there a way to do this using `orderBy` or `filter` in a single `ng-repeat`?

Original source