# ArraySort

Sorts array elements.

## Method Signature

```
ArraySort(array=[assignablearray], sortType=[any], sortOrder=[string], localeSensitive=[boolean], callback=[function:Comparator])
```

### Arguments

| Argument          | Type                  | Required | Description                              | Default      |
| ----------------- | --------------------- | -------- | ---------------------------------------- | ------------ |
| `array`           | `assignablearray`     | `true`   | The array to sort                        |              |
| `sortType`        | `any`                 | `false`  | Options are text, numeric, or textnocase | `textnocase` |
| `sortOrder`       | `string`              | `false`  | Options are asc or desc                  | `asc`        |
| `localeSensitive` | `boolean`             | `false`  | Sort based on local rules                | `false`      |
| `callback`        | `function:Comparator` | `false`  | Function to sort by                      |              |

## Examples

### Simple example for arraySort function

Uses the arraySort() function to get the sorted array and which sorted by type numeric

[Run Example](https://try.boxlang.io/?code=eJwrzs9NdSwqSqxUsFWIVuDiNDTQ4eI0AhG6lpZA0sQMSJgacMVacyWClAXnF5VoKBTDdOkoKOWV5qYWZSYrAZkpqcXJSgqa1lzlRZklqf6lJQWlQMVewf5%2BwUAliTmZValIehU0QUoB2KMlUg%3D%3D)

```java
someArray = [ 
	10,
	20,
	-99,
	46,
	50
];
arraySort( someArray, "numeric", "desc" );
writeOutput( JSONSerialize( someArray ) );

```

Result: \[50,46,20,10,-99]

### Simple example with member function

[Run Example](https://try.boxlang.io/?code=eJwrzs9NdSwqSqxUsFWIVuDiVHLyj%2FBx9HNX0gGyk%2FIrchLz0sHsxJT8pFQwywlJNMjR08dfiSvWmqsYZpBecX5RiYaCUklqRYmSjoJSSmpxspKCpjVXeVFmSap%2FaUlBKVDaK9jfLzi1KDMxJ7MqVUMBrltBE6QUAJoQLF0%3D)

```java
someArray = [ 
	"BOXLANG",
	"boxlang",
	"adobe",
	"Boxlang",
	"RAILO"
];
someArray.sort( "text", "desc" );
writeOutput( JSONSerialize( someArray ) );

```

Result: \["boxlang","adobe","RAILO","Boxlang","BOXLANG"]

### Simple example with callback function

Uses the callback function

[Run Example](https://try.boxlang.io/?code=eJxVjcEKgkAQhs%2B7T%2FHjSWEJMuiQFOwhgiA9eIwOS8xBUFfGlbDw3ds1hLzMDDPf%2FF9vG9LMZsQRd0jxkULk%2BnbGAZGj3lHT1XYkipQ%2F6Mu836WRFJNawwsYnlbwPsDykUkTNKVlF6NfrAoxdDuCturXUyQ4nuCTmdzALZ626QxT7JFNcCnPzAOSTE6hvLhyVAyuG3zytSzykrgydfWmP5GP9egX8cxCsg%3D%3D)

```java
someArray = [ 
	{
		NAME : "testemployee",
		AGE : "32"
	},
	{
		NAME : "employeetest",
		AGE : "36"
	}
];
arraySort( someArray, ( Any e1, Any e2 ) => {
	return compare( e1.NAME, e2.NAME );
} );
writeOutput( JSONSerialize( someArray ) );

```

Result: \[{"NAME":"employeetest","AGE":"36"},{"NAME":"testemployee","AGE":"32"}]

### Script member syntax: sort array of structs by multiple keys

Takes an array of structs and sorts by multiple different keys, similar to the way a query allows.

[Run Example](https://try.boxlang.io/?code=eJyVkl9vgjAUxZ%2FhU9zxhIkj4raXGZagsMRlukXMXpY9dFhnM2hNWzRm%2Bt2l4r%2ByLpkvhJ5z7%2F3dU0Cco9XLNJG8SKWAAN7Btn5sy3IKgXl%2F4sA9%2BE11nhIu5BDlWEnOE5tRZ6dn6EyOGK7UCZ4jLnNMT16CMiwqF6WSLHaqb1ub5i9i20REFBuISU7k7E%2FmAPFvLAn9%2Bh%2F3xsANM5KawOoGBKOXxW0ZsbcGbJd9GqBdzpYXIs1J7wzI3gzxjJiyRmhBxOWXrNLaHx0baT%2BZJxiXLrgQ0hWojfzm8bUNDQgeoFyWTN3K9MLeuP8Ww1VQVRzODVVlcSwLTnXnWmvsqCXOxkXxazgaD%2BLheBgOYggOY2v6eq3jy7rWnnma9RwmtSlHpSo938%2F3HvujyvVSlpfXiN1919GARrmu2ldvPEyt951oVUqtSQ9Ub63FLQds1GPJicRRkc9d0L%2BaMreaqysC)

```java
arrayOfStructs = [ 
	{
		"userId" : 1,
		"firstName" : "John",
		"lastName" : "Doe",
		"departmentName" : "Sales",
		"active" : 1
	},
	{
		"userId" : 2,
		"firstName" : "Jane",
		"lastName" : "Smith",
		"departmentName" : "Marketing",
		"active" : 1
	},
	{
		"userId" : 3,
		"firstName" : "Alice",
		"lastName" : "Johnson",
		"departmentName" : "Sales",
		"active" : 0
	},
	{
		"userId" : 4,
		"firstName" : "Bob",
		"lastName" : "Brown",
		"departmentName" : "Sales",
		"active" : 1
	},
	{
		"userId" : 5,
		"firstName" : "Charlie",
		"lastName" : "Davis",
		"departmentName" : "Marketing",
		"active" : 0
	}
];
arrayOfStructs.sort( ( Any user1, Any user2 ) => {
	if( user1.ACTIVE != user2.ACTIVE ) {
		return user2.ACTIVE - user1.ACTIVE;
	}
	if( user1.DEPARTMENTNAME == user2.DEPARTMENTNAME || user1.ACTIVE == 0 ) {
		if( user1.LASTNAME == user2.LASTNAME ) {
			return user1.FIRSTNAME.compare( user2.FIRSTNAME );
		}
		return user1.LASTNAME.compare( user2.LASTNAME );
	}
	return user1.DEPARTMENTNAME.compare( user2.DEPARTMENTNAME );
} );
writeDump( arrayOfStructs );

```

Result: Sorts by active employees, then by their last name and finally by their first name

### Additional Examples

[Run Example](https://try.boxlang.io/?code=eJy1kE1rAjEQhs%2FJrxhyWiEoWuihorDYVQSrh%2BCpeFizIxU2myUftEvxvzeJWJRS8OJp3kyeeedDaIW5MWUHE3gHSthss3qdb8Vys2Y8PKWuq4O3R92kZ1npPSa18rIozmo7C4ruxrSMRkIbl4G4%2BHJgDr8cC7FCKxn0xrTyqr1CYmowAIVqjwYOvpEu9KO%2F%2F32bLO%2FyEdf7UPJNCVnnbwW8xHLrULW17jCtQPJFyj%2BNGCUnfgtfwFh0Az9H%2BP9lM8ibDnDIz3EEPZhMITgbdN40ILVqS4NZQPqxFw9MEnH4093Hgc%2Bj%2BwBZa%2BsN%2FrnUQ4b4ATj9oJY%3D)

```java
SomeArray = [ 
	"BOXLANG",
	"boxlang",
	"adobe",
	"Boxlang",
	"BOXLANG"
];
arraySort( SomeArray, "text", "desc" );
dump( SomeArray );
// member function
SomeArray.sort( "text", "desc" );
dump( SomeArray );
SomeArray = [
	{
		NAME : "testemployee",
		AGE : "32"
	},
	{
		NAME : "employeetest",
		AGE : "36"
	}
];
arraySort( SomeArray, ( Any e1, Any e2 ) => {
	return compare( e1.NAME, e2.NAME );
} );
dump( SomeArray );
// member function with closure
SomeArray.sort( ( Any e1, Any e2 ) => {
	return compare( e1.NAME, e2.NAME );
} );
dump( SomeArray );

```

## Related

* [ArrayAppend](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayappend)
* [ArrayAvg](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayavg)
* [ArrayChunk](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraychunk)
* [ArrayClear](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayclear)
* [ArrayContains](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraycontains)
* [ArrayContainsNoCase](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraycontainsnocase)
* [ArrayDelete](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraydelete)
* [ArrayDeleteAt](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraydeleteat)
* [ArrayDeleteNoCase](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraydeletenocase)
* [ArrayEach](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayeach)
* [ArrayEvery](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayevery)
* [ArrayFilter](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayfilter)
* [ArrayFind](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayfind)
* [ArrayFindAll](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayfindall)
* [ArrayFindAllNoCase](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayfindallnocase)
* [ArrayFindFirst](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayfindfirst)
* [ArrayFindNoCase](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayfindnocase)
* [ArrayFirst](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayfirst)
* [ArrayFlatMap](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayflatmap)
* [ArrayFlatten](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayflatten)
* [ArrayGetMetadata](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraygetmetadata)
* [ArrayGroupBy](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraygroupby)
* [ArrayIndexExists](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayindexexists)
* [ArrayInsertAt](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayinsertat)
* [ArrayIsDefined](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayisdefined)
* [ArrayLast](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraylast)
* [ArrayMap](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraymap)
* [ArrayMax](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraymax)
* [ArrayMedian](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraymedian)
* [ArrayMerge](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraymerge)
* [ArrayMid](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraymid)
* [ArrayMin](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraymin)
* [ArrayNew](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraynew)
* [ArrayNone](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraynone)
* [ArrayPop](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraypop)
* [ArrayPrepend](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayprepend)
* [ArrayPush](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraypush)
* [ArrayRange](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayrange)
* [ArrayReduce](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayreduce)
* [ArrayReduceRight](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayreduceright)
* [ArrayReject](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayreject)
* [ArrayResize](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayresize)
* [ArrayReverse](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayreverse)
* [ArraySet](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayset)
* [ArrayShift](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayshift)
* [ArraySlice](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayslice)
* [ArraySome](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraysome)
* [ArraySplice](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraysplice)
* [ArraySum](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraysum)
* [ArraySwap](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayswap)
* [ArrayToList](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraytolist)
* [ArrayToStruct](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraytostruct)
* [ArrayTranspose](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arraytranspose)
* [ArrayUnique](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayunique)
* [ArrayUnshift](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayunshift)
* [ArrayZip](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/array/arrayzip)
