sort (itemsKey, sortDefinition) Ember.ComputedProperty
public
A computed property which returns a new array with all the properties from the first dependent array sorted based on a property or sort function.
The callback method you provide should have the following signature:
1 | function (itemA, itemB); |
-
itemA
the first item to compare. -
itemB
the second item to compare.
This function should return negative number (e.g. -1
) when itemA
should come before itemB
. It should return positive number (e.g. 1
) when itemA
should come after itemB
. If the itemA
and itemB
are equal this function should return 0
.
Therefore, if this function is comparing some numeric values, simple itemA - itemB
or itemA.get( 'foo' ) - itemB.get( 'foo' )
can be used instead of series of if
.
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | let ToDoList = Ember.Object.extend({ // using standard ascending sort todosSorting: [ 'name' ], sortedTodos: Ember.computed.sort( 'todos' , 'todosSorting' ), // using descending sort todosSortingDesc: [ 'name:desc' ], sortedTodosDesc: Ember.computed.sort( 'todos' , 'todosSortingDesc' ), // using a custom sort function priorityTodos: Ember.computed.sort( 'todos' , function (a, b){ if (a.priority > b.priority) { return 1; } else if (a.priority < b.priority) { return -1; } return 0; }) }); let todoList = ToDoList.create({todos: [ { name: 'Unit Test' , priority: 2 }, { name: 'Documentation' , priority: 3 }, { name: 'Release' , priority: 1 } ]}); todoList.get( 'sortedTodos' ); // [{ name:'Documentation', priority:3 }, { name:'Release', priority:1 }, { name:'Unit Test', priority:2 }] todoList.get( 'sortedTodosDesc' ); // [{ name:'Unit Test', priority:2 }, { name:'Release', priority:1 }, { name:'Documentation', priority:3 }] todoList.get( 'priorityTodos' ); // [{ name:'Release', priority:1 }, { name:'Unit Test', priority:2 }, { name:'Documentation', priority:3 }] |
Parameters:
-
itemsKey
String
-
sortDefinition
String or Function
- a dependent key to an array of sort properties (add `:desc` to the arrays sort properties to sort descending) or a function to use when sorting
Returns:
-
Ember.ComputedProperty
- computes a new sorted array based on the sort property array or callback function
Please login to continue.