# Thread: Array .sort(), special case...

1. Registered User
Join Date
Jul 2010
Posts
2

## Array .sort(), special case...

Hey guys...

Let's say I have an array of 10 items (known length).
Each item in the array is another array of 2 items each (also known length).
So imagine each of the items of the first array looks like this:

Array1[0]=Array2;

and

Array2[0]='a string'
Array2[1]=number.

What I am trying to do is sort Array1, descending based on the value of Array2[1].

Any ideas would be very welcome, thanks in advance...

2. Registered User+
Join Date
Aug 2007
Posts
3,767
This should do the trick.
Code:
`Array1.sort(function(a,b){return a[1] - b[1];});`
If you want the order reversed, use this instead.
Code:
`Array1.sort(function(a,b){return b[1] - a[1];});`

3. Registered User
Join Date
Jul 2010
Posts
2
Thanks a lot mate, worked just fine! Take care...

4. if you/anyone need something re-usable:

Code:
```function sortSub(strProperty, blnDescending){
return blnDescending?
function(a,b){ return a[strProperty]==b[strProperty] ? 0 : (a[strProperty]<b[strProperty]?1:-1);}  :
function(a,b){ return a[strProperty]==b[strProperty] ? 0 : (a[strProperty]>b[strProperty]?1:-1);} ;
}```

it can sort an array of objects, including arrays of arrays.

it builds a sort function, so you pass a call to sortSub, with the property name to be sorted on passed to it, as the argument to a .sort().
normally, you put a function or reference to a function there, but this builds a function on-demand, and that gets passed to .sort().

usage:

function sortSub( string strProperty, boolean blnDescending ) returns function;

examples:
Code:
```r=[[2,6],[2,8],[8,2],[1,5],[3,3],[4,1]];

r=[{a:1},{a:6},{a:1},{a:4}];
alert( JSON.stringify( r.sort(sortSub( "a", true )), null,  "\t")  )```
Last edited by rnd me; 07-16-2010 at 02:19 PM.