QuerySort

Sorts array elements.

Method Signature

QuerySort(query=[query], sortFunc=[function:Comparator])

Arguments

Argument
Type
Required
Description
Default

query

query

true

Query to sort

sortFunc

function:Comparator

true

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" );

Last updated

Was this helpful?