Products Downloads


French version


 

This function returns a result sequence from sorting a sequence of Hash-type objects.

Sorting can be in ascending or descending order. It is performed according to the values of an object attribute.

To do this, the attribute name or sequence of attribute names representing the path in dot notation leading to the sub-level object attribute needs to be specified.
When the indicated attribute values are String type, lexicographic sorting is applied.

 

NB:
Some differences in relation to the FreeMarker "built-in" "sort_by" function (click here for more details) applied to a ([...]?sort_by) sequence:

    • The obtained result is identical for Boolean/Number/Date/Time/Date-time types. For the String type, the FreeMarker "sort_by" function applies a sort using a collation,
    • The "sort_by" function does not sort in descending order. The only solution is to use the FreeMarker "reverse" ([...]?sort_by()?reverse) function, but the original order of equal values is not respected.



Parameters

Hash sequence

seqHash

Hash object sequence to sort

Mandatory

String/String Sequence

sedAttrName

Object attribute on which to apply the sort. It is identified by its name or attribute name sequence representing the path in dot notation leading to it.

Mandatory

Boolean

ascendingOrder

"true" for an ascending sort, "false" for a descending sort

Optional.

The default value is "true"

 


For example

<#assign seqObj = [
  {"name":"whale", "weight":2000},
  {"name":"Barbara", "weight":53},
  {"name":"zeppelin", "weight":-200},
  {"name":"aardvark", "weight":30},
  {"name":"beetroot", "weight":0.3}
]>
<#-- Order by name -->
<#list hardisCore.lexicographicSortBy(seqObj, "name") as aObj>
- ${aObj.name}: ${aObj.weight}
</#list> 


The output is:

- aardvark: 30

- Barbara: 53

- beetroot: 0.3

- whale: 2000

- zeppelin: -200


Another example

<#assign members = [
  {"name": {"first": "Joe", "last": "Smith"}, "age": 40},
  {"name": {"first": "Fred", "last": "Crooger"}, "age": 35},
  {"name": {"first": "Amanda", "last": "Fox"}, "age": 25}]>
<#-- Sorted by name.last -->
<#list hardisCode.lexicographicSortBy(members, ['name', 'last']) as aObj>
- ${aObj.name.last}, ${aObj.name.first}: ${aObj.age} years old
</#list> ?

 

The output is:

- Crooger, Fred: 35 years old

- Fox, Amanda: 25 years old

- Smith, Joe: 40 years old 

↑ Top of page