Sorts array elements.
Method Signature
QuerySort(query=[query], sortFunc=[function:Comparator])
Arguments
Argument
Type
Required
Description
Default
Sort function to use. You can alternatively pass a Java Comparator.
Examples
Sort a query using the querySort function on a column with date values in ascending order
Run Example
// build a query
exampleQuery = queryNew( "id,createdDate", "integer,timestamp", [
{
ID : 1,
CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
},
{
ID : 2,
CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
},
{
ID : 3,
CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
},
{
ID : 4,
CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
},
{
ID : 5,
CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
}
] );
// sort it
querySort( exampleQuery, ( Any rowA, Any rowB ) => {
return dateCompare( rowA.CREATEDDATE, rowB.CREATEDDATE );
} );
// dump it
writeDump( exampleQuery );
Sort a query using a sort member function on a column with date values in descending order
Run Example
// build a query
exampleQuery = queryNew( "id,createdDate", "integer,timestamp", [
{
ID : 1,
CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
},
{
ID : 2,
CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
},
{
ID : 3,
CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
},
{
ID : 4,
CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
},
{
ID : 5,
CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
}
] );
// sort it
exampleQuery.sort( ( Any rowA, Any rowB ) => {
return -(dateCompare( rowA.CREATEDDATE, rowB.CREATEDDATE ));
} );
// dump it
writeDump( exampleQuery );
Sort a query using a sort member function on a column with string values in ascending order
Run Example
// build a query
exampleQuery = queryNew( "id,description", "integer,varchar", [
{
ID : 1,
DESCRIPTION : "dog"
},
{
ID : 2,
DESCRIPTION : "cat"
},
{
ID : 3,
DESCRIPTION : "bird"
},
{
ID : 4,
DESCRIPTION : "zebra"
},
{
ID : 5,
DESCRIPTION : "snake"
}
] );
// sort it
exampleQuery.sort( ( Any rowA, Any rowB ) => {
return compare( rowA.DESCRIPTION, rowB.DESCRIPTION );
} );
// dump it
writeDump( exampleQuery );
Sort a query using the querySort function on a column with string values in descending order
Run Example
// build a query
exampleQuery = queryNew( "id,description", "integer,varchar", [
{
ID : 1,
DESCRIPTION : "dog"
},
{
ID : 2,
DESCRIPTION : "cat"
},
{
ID : 3,
DESCRIPTION : "bird"
},
{
ID : 4,
DESCRIPTION : "zebra"
},
{
ID : 5,
DESCRIPTION : "snake"
}
] );
// sort it
querySort( exampleQuery, ( Any rowA, Any rowB ) => {
return -(compare( rowA.DESCRIPTION, rowB.DESCRIPTION ));
} );
// dump it
writeDump( exampleQuery );
Sort a query using the querySort function on a column with numeric values in ascending order
Run Example
// build a query
exampleQuery = queryNew( "id,description", "integer,varchar", [
{
ID : 3,
DESCRIPTION : "dog"
},
{
ID : 5,
DESCRIPTION : "cat"
},
{
ID : 4,
DESCRIPTION : "bird"
},
{
ID : 1,
DESCRIPTION : "zebra"
},
{
ID : 2,
DESCRIPTION : "snake"
}
] );
// sort it
querySort( exampleQuery, ( Any rowA, Any rowB ) => {
return val( rowA.ID ) < val( rowB.ID ) ? -1 : val( rowA.ID ) == val( rowB.ID ) ? 0 : 1;
} );
// dump it
writeDump( exampleQuery );
Additional Examples
people = QueryNew( "name,dob,age", "varchar,date,int", [
[
"Susi",
CreateDate( 1970, 1, 1 ),
70
],
[
"Urs",
CreateDate( 1995, 1, 1 ),
40
],
[
"Fred",
CreateDate( 1960, 1, 1 ),
50
],
[
"Jim",
CreateDate( 1988, 1, 1 ),
30
]
] );
Dump( var=people, label="people - original query" );
QuerySort( people, "name", "asc" );
dump( var=people, label="people - sorted by name" );
QuerySort( people, ( Any row1, Any row2 ) => {
return compare( arguments.ROW1.AGE, arguments.ROW2.AGE );
} );
dump( var=people, label="people - sorted by age" );