CFLib.org – Common Function Library Project

ArraySort2D()

Last updated October 8, 2002

Version: 1 | Requires: ColdFusion 5 | Library: DataManipulationLib

 
Rated 3 time(s). Average Rating: 4.3

Description:
Takes an array, sortcolumn value, sort type (numeric, text, textnocase), and optional sort order (defaults to asc) as arguments. Returns an array sorted by the sortcolumn in the second dimension according to the type and order.

Return Values:
Returns an array.

Example:

view plain print about
<cfset startArray = ArrayNew(2)>
<cfset startArray[1][1] = 3>
<cfset startArray[1][2] = 5>
<cfset startArray[2][1] = 4>
<cfset startArray[2][2] = 2>
<cfset startArray[3][1] = 9>
<cfset startArray[3][2] = 1>

<cfoutput>

<cfloop from="1" to="#ArrayLen(startArray)#" index="i">
    <cfloop from="1" to="#ArrayLen(startArray[i])#" index="j">
        startArray[#i#][#j#] is #startArray[i][j]#<br>    </cfloop>
</cfloop>
</p>

<cfset finalArray = #ArraySort2D(startArray, 2, "numeric")#>

<p>
<cfloop from="1" to="#ArrayLen(finalArray)#" index="i">
    <cfloop from="1" to="#ArrayLen(finalArray[i])#" index="j">
        finalArray[#i#][#j#] is #finalArray[i][j]#<br>
    </cfloop>
</cfloop>
</p>
</cfoutput>

Parameters:

No arguments.

Full UDF Source:

view plain print about
<cfscript>
/**
 * Sorts a two dimensional array by the specified column in the second dimension.
 * 
 * @return Returns an array. 
 * @author Robert West (robert.west@digiphilic.com) 
 * @version 1, October 8, 2002 
 */

function ArraySort2D(arrayToSort, sortColumn, type) {
    var order = "asc";
    var i = 1;
    var j = 1;
    var thePosition = "";
    var theList = "";
    var arrayToReturn = ArrayNew(2);
    var sortArray = ArrayNew(1);
    var counter = 1;
    if (ArrayLen(Arguments) GT 3){
        order = Arguments[4];
    }
    for (i=1; i LTE ArrayLen(arrayToSort); i=i+1) {
        ArrayAppend(sortArray, arrayToSort[i][sortColumn]);
    }
    theList = ArrayToList(sortArray);
    ArraySort(sortArray, type, order);
    for (i=1; i LTE ArrayLen(sortArray); i=i+1) {
        thePosition = ListFind(theList, sortArray[i]);
        theList = ListDeleteAt(theList, thePosition);
        for (j=1; j LTE ArrayLen(arrayToSort[thePosition]); j=j+1) {
            arrayToReturn[counter][j] = arrayToSort[thePosition][j];
        }
        ArrayDeleteAt(arrayToSort, thePosition);
        counter = counter + 1;
    }
    return arrayToReturn;
}
</cfscript>
blog comments powered by Disqus

Search CFLib.org


Latest Additions

Tayo Akinmade Tayo Akinmade added
arrayTrim
10 day(s) ago

Will Belden Will Belden added
longTime
16 day(s) ago

James Sleeman James Sleeman added
quickSort
26 day(s) ago

Ben Forta Ben Forta added
GetHostAddress
29 day(s) ago

Top Rated

Darwan Leonardo Sitepu EksporSQLData
Rated 5.0, 16 time(s)

Darwan Leonardo Sitepu backupDatabase
Rated 5.0, 13 time(s)

Barney Boisvert indentXml
Rated 5.0, 10 time(s)

Kevin Pepperman generateSsccAsn
Rated 5.0, 4 time(s)

Created by Raymond Camden / Design by Justin Johnson